这篇文章主要介绍XML数据解析的系统方法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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<_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];
//
_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数据解析的系统方法有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联成都网站设计公司行业资讯频道!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文名称:XML数据解析的系统方法有哪些-创新互联
网页路径:http://www.scyingshan.cn/article/ggoos.html


咨询
建站咨询
