免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1793 | 回复: 1
打印 上一主题 下一主题

浅谈Objective-C实体转化为XML报文字符串和解析XML为实体 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-26 20:55 |只看该作者 |倒序浏览
浅谈Objective-C实体转化为XML报文字符串和解析XML为实体










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

大家知道,Objective-C创建一个类之前,必须声明一个接口,然后再创建一个实现该接口类。
  1. 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
  2. 复制代码
复制代码
接着,实现该接口类,这里我使用了懒汉单例模式,代码如下:
  1. 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 }
  2. 复制代码
复制代码
下面是实体于XML字符串互相转化代码
  1. 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
  2. 复制代码
复制代码
本代码是之前入门时所创建,还没使用对实体转化进行代码复用,有时间再完善

论坛徽章:
0
2 [报告]
发表于 2012-02-26 20:56 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP