xml是一种自描述的数据交换格式。是一种非常重要的数据交换 格式,多年来一直用于各种计算机语言中。xml类似html,有一对对标签对,格式比html严谨,一个开始,一个>结尾.
解析的内容为:
张三 123456 小张 1111111111 张三 2222222 小四儿 李四是个好学生 张三 88888888 小五 1234567890
登录后复制
事先已将数据读取并存储在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 #import "user.h"@interface userParser : NSObject//存储信息的数组@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 _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数据解析的系统方法的代码分享的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2418845.html