您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

XML数据解析的系统方法的代码分享

2024/4/22 19:26:45发布19次查看
xml是一种自描述的数据交换格式。是一种非常重要的数据交换 格式,多年来一直用于各种计算机语言中。xml类似html,有一对对标签对,格式比html严谨,一个a8093152e673feb7aba1828c43532094开始,一个5f557f62ae7ac7a14e0b1cb564790dfc结尾.
解析的内容为:
<users> <user id="001"> <name>张三</name> <password>123456</password> <nickname>小张</nickname> <description>1111111111</description> </user> <user id="002"> <name>张三</name> <password>2222222</password> <nickname>小四儿</nickname> <description>李四是个好学生</description> </user> <user id="003"> <name>张三</name> <password>88888888</password> <nickname>小五</nickname> <description>1234567890</description> </user> </users>
事先已将数据读取并存储在data中.
创建一个类,继承自nsobject,命名为userinfo
@property(nonatomic,copy)nsstring *uid; @property(nonatomic,copy)nsstring *name; @property(nonatomic,copy)nsstring *password; @property(nonatomic,copy)nsstring *nickname; @property(nonatomic,copy)nsstring *description;
再创建一个类,同样继承自nsobject,命名为userparser,实现xml文件的读取.
userparser.h
#import <foundation/foundation.h> #import "user.h" @interface userparser : nsobject<nsxmlparserdelegate> //存储信息的数组 @property(nonatomic,retain)nsmutablearray *array; //实例 @property(nonatomic,retain)user *people; //创建字符串保存信息 @property(nonatomic,copy)nsmutablestring *buffer; //读取xml文件 -(void)parserwithstring:(nsstring *)string; @end
userparser.m
#import "userparser.h" @implementation userparser -(void)parserwithstring:(nsstring *)string { //使用系统xml解析方法 nsxmlparser *parser=[[nsxmlparser alloc]initwithdata:[string datausingencoding:nsutf8stringencoding]]; //设置代理 parser.delegate=self; //开始解析 [parser parse]; } #pragma mark ---nsxmlparserdelegate--- //开始解析 - (void)parserdidstartdocument:(nsxmlparser *)parser { nslog(@"it begin"); } //解析结束 - (void)parserdidenddocument:(nsxmlparser *)parser { nslog(@"it is over"); for (int i=0; i<_array.count; i++) { user *user=_array[i]; nslog(@"%@,%@,%@,%@,%@",user.uid,user.name,user.password,user.nickname,user.description); } } //遇到开始标签 //attributedict标签属性 - (void)parser:(nsxmlparser *)parser didstartelement:(nsstring *)elementname namespaceuri:(nsstring *)namespaceuri qualifiedname:(nsstring *)qname attributes:(nsdictionary *)attributedict { if ([elementname isequaltostring:@"users"]) { _array=[[nsmutablearray alloc]init]; } else if ([elementname isequaltostring:@"user"]) { _people=[[user alloc]init]; //<user id="3"> _people.uid=[attributedict objectforkey:@"id"]; } else if ([elementname isequaltostring:@"name"]) { _buffer=[[nsmutablestring alloc]init]; } else if ([elementname isequaltostring:@"password"]) { _buffer=[[nsmutablestring alloc]init]; } else if ([elementname isequaltostring:@"nickname"]) { _buffer=[[nsmutablestring alloc]init]; } else if ([elementname isequaltostring:@"description"]) { _buffer=[[nsmutablestring alloc]init]; } } //结束标签 - (void)parser:(nsxmlparser *)parser didendelement:(nsstring *)elementname namespaceuri:(nsstring *)namespaceuri qualifiedname:(nsstring *)qname { if ([elementname isequaltostring:@"name"]) { _people.name=_buffer; } else if ([elementname isequaltostring:@"password"]) { _people.password=_buffer; } else if ([elementname isequaltostring:@"nickname"]) { _people.nickname=_buffer; }else if ([elementname isequaltostring:@"description"]) { _people.description=_buffer; } else if ([elementname isequaltostring:@"user"]) { [_array addobject:_people]; } } //读取内容 - (void)parser:(nsxmlparser *)parser foundcharacters:(nsstring *)string { //nscharacterset字符串结合,取出字符串中的空格 [_buffer appendstring:[string stringbytrimmingcharactersinset:[nscharacterset whitespaceandnewlinecharacterset]]]; }
在viewcontroller中,创建userparser的实例对象,通过parserwithstring方法实现数据解析
userparser *uparser=[[userparser alloc]init]; [uparser parserwithstring:user];
注:将数据解析与界面显示分开写有助于减低程序的耦合,同时也符合mvc编程模式.
以上就是xml数据解析的系统方法的代码分享的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product