浅谈Objective-C实体转化为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 EntityConvertXML13 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
- 复制代码
复制代码 本代码是之前入门时所创建,还没使用对实体转化进行代码复用,有时间再完善
|