浅谈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 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


 

 

posted @ 2012-02-26 10:19  LeeHonGee  阅读(3362)  评论(2编辑  收藏  举报