zoukankan      html  css  js  c++  java
  • 浅谈ObjectiveC实体转化为XML报文字符串和解析XML为实体

    前两个月,由于公司项目需要,业余时间,迅速掌握入门Objective-c基本语法,由于Objective-c使用面向对象编程和MVC模式,很快就心里有底了,呵呵。最近忙于开发游戏服务器,Objective-C又一个月没有学习和敲过代码了,很快也忘了基本语法差不多,趁今天有空,再次回顾一下代码。介绍一下,实体与XML报文字符串互相转化。

    大家知道,Objective-C创建一个类之前,必须声明一个接口,然后再创建一个实现该接口类。

     1 //
    2 // EntityConvertXML.h
    3 // NoteRecord
    4 //
    5 // Created by 李 航杰 on 11-11-21.
    6 // Copyright 2011年 LeeHonGee. All rights reserved.
    7 //
    8
    9 #import <Foundation/Foundation.h>
    10 @class Person;
    11
    12 @interface EntityConvertXML : NSObject {
    13
    14 }
    15
    16 +(NSString *) entityConvertXMLString:(Person*) person;
    17 +(Person*) getEitityFromXmlConvert:(NSString*) responseXML;
    18 @end



    接着,实现该接口类,这里我使用了懒汉单例模式,代码如下:

     1 //
    2 // EntityConvertXML.m
    3 // NoteRecord
    4 //
    5 // Created by 李 航杰 on 11-11-21.
    6 // Copyright LeeHonGee. All rights reserved.
    7 //
    8

    9 #import "EntityConvertXML.h"
    10 #import "Person.h"
    11 #import "XmlParser.h"
    12 @implementation EntityConvertXML
    13 static EntityConvertXML *sharedInstance=nil;
    14 +(EntityConvertXML*) sharedInstance{
    15 if (sharedInstance==nil) {
    16 sharedInstance=[[[self alloc] init] autorelease];
    17 }
    18 return sharedInstance;
    19 }
    20 /**
    21 * 使用单例模式
    22 * +(id) allocWithZone:(NSZone*) zone是覆盖方法
    23 */
    24 +(id) allocWithZone:(NSZone *)zone{
    25 @synchronized(self){
    26 if (sharedInstance==nil) {
    27 sharedInstance=[super allocWithZone:zone];
    28 return sharedInstance;
    29 }
    30 return nil;
    31 }
    32 }

    下面是实体于XML字符串互相转化代码

     1 /**
    2 * Author 李航杰
    3 * 用途:这个方法主要实现对实体Class进行封装成XML报文
    4 * 对于局部变量,自动释放池清空对象时,进行的,不需要使用显式的释放语句
    5 */
    6 +(NSString *) entityConvertXMLString:(Person*) person{
    7 NSMutableString *xmlBody=[[NSMutableString alloc] init];
    8 [xmlBody appendFormat:@"%@",@"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"];
    9 [xmlBody appendString:@"\n<Person>\n"];
    10 [xmlBody appendFormat:@"<countryNum>%@</countryNum>\n",person.countryNum];
    11 [xmlBody appendFormat:@"<phone>%@</phone>\n",person.phone];
    12 [xmlBody appendFormat:@"<name>%@</name>\n",person.name];
    13 [xmlBody appendFormat:@"<email>%@</email>\n",person.email];
    14 [xmlBody appendFormat:@"<gender>%@</gender>\n",person.gender];
    15 [xmlBody appendFormat:@"<password>%@</password>\n",person.password];
    16 [xmlBody appendString:@"</Person>"];
    17 return [xmlBody autorelease];
    18 }
    19 /**
    20 *@Author 李航杰
    21 *用途:使用XmlParser将XML报文字符串转化为实体对象
    22 *
    23 */
    24
    25 +(Person*) getEitityFromXmlConvert:(NSString*) responseXML{
    26 XmlParser *parser = [[XmlParser alloc] init];
    27 Person *person=[[Person alloc] init];
    28 NSMutableArray *personArray = [parser fromXml:responseXML withObject:person];
    29 person = [personArray objectAtIndex:0];
    30 [parser release];
    31 return [person autorelease];
    32 }
    33 /**
    34 *记得急时释放资源,以免内存泄漏
    35 *
    36 */
    37 -(void) dealloc{
    38 [super dealloc];
    39 }
    40
    41 @end



    本代码是之前入门时所创建,还没使用对实体转化进行代码复用,有时间再完善

    创建者:2012-02-26   上午10:11:08


  • 相关阅读:
    JVM内存划分
    JVM内存划分
    类装载器学习
    xml文件参数类型有问题
    七牛云的使用
    PyCharm下载及使用
    安装python--环境配置
    软件测试--测试用例
    python selenium ——— 动态id、class定位
    JDBC封装的工具类
  • 原文地址:https://www.cnblogs.com/leehongee/p/2368412.html
Copyright © 2011-2022 走看看