iOS中xml文件解析
来源:互联网 发布:知阴三部曲多少钱一盒 编辑:程序博客网 时间:2024/05/22 02:14
xml文件内容
<?xml version="1.0" encoding="UTF-8"?><root> <person id="1"> <name>jack</name> <personID>2015</personID> <age>20</age> </person> <person id="2"> <name>rose</name> <personID>2016</personID> <age>18</age> </person> <person id="3"> <name>tom</name> <personID>2017</personID> <age>19</age> </person> <person id="4"> <name>jerry</name> <personID>2018</personID> <age>21</age> </person></root>
下面是解析用的代码以及详细的注释
#import "ViewController.h"//这个就是一个model 三个属性#import "Person.h"@interface ViewController ()<NSXMLParserDelegate>@property(nonatomic,strong)id elementObject;@property(nonatomic,strong)NSString *characterString;@property(nonatomic,strong)NSMutableArray *elements;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; [self xmlParser];}- (void)xmlParser{ self.elements=[NSMutableArray array]; //从路径获取xml文件 NSString *path=[[NSBundle mainBundle]pathForResource:@"person" ofType:@"xml"]; NSData *data=[NSData dataWithContentsOfFile:path]; NSXMLParser *parser=[[NSXMLParser alloc]initWithData:data]; parser.delegate=self; //开始解析自动调用代理方法 [parser parse];}- (void)parserDidStartDocument:(NSXMLParser *)parser{ //开始解析}- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{ //解析到第一个元素 //判断解析到的元素是不是person 因为这个是代理方法 我们可以创建多个perser if ([elementName isEqualToString:@"person"]) { self.elementObject=[[Person alloc]init]; } //解析到了元素我们在这里还看不到是什么}- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ //查看到第一个元素的内容 NSLog(@"%@",string); self.characterString=string;}- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ //解析一个结束的元素节点 在xml中我们的元素存储 是以一个个元素节点存储的 NSLog(@"解析元素结束:%@",elementName); //判断解析到哪一个结束的元素节点 当为root 证明已经解析到最后的元素节点 停止解析 if ([elementName isEqualToString:@"root"]) { NSLog(@"解析结束"); }else if([elementName isEqualToString:@"person"]){ [self.elements addObject:self.elementObject]; //当解析到 person以下的元素节点 就是person的属性 设置上 就行了 }else [self.elementObject setValue:self.characterString forKey:elementName];}//结束解析- (void)parserDidEndDocument:(NSXMLParser *)parser{ for (Person *per in self.elements) { NSLog(@"%@",per.name); }}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
0 0
- iOS中xml文件解析
- 【IOS中XML解析】NSXMLParser方法解析XML文件案例
- ios中如何解析xml文件
- ios中如何解析xml文件
- ios中如何解析xml文件
- ios中如何解析xml文件
- IOS中XML大文件解析
- IOS解析XML文件
- IOS解析XML文件
- IOS中XML解析之小文件解析
- iOS中XML解析
- ios中xml解析
- iOS中XML解析
- IOS中XML解析
- 重新再写如何ios中解析xml文件
- 在iOS中 XML文件的解析和写入
- ios如何解析xml文件
- ios如何解析xml文件
- struts配置2
- MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- 添加DOCTYPE
- 图文并茂用地址分析双向链表
- Android gridview 嵌套在listview中显示不全问题
- iOS中xml文件解析
- C语言(数组的地址)
- MapReduce 算法设计-Inverted Indexing
- linux中快速清空文件内容的几种方法
- 下载学习二
- C++ STL
- Java使用imageio 读写图像
- 19个MySQL性能优化要点解析
- WIN7管理员账号删除后无法获取管理员权限解决