iOS XML 系统自带的解析方法

XML 文档解析 使用的五个代理方法
1.
文档解析开始 parserDidStartDocument:
2.文档解析结束 parserDidEndDocument:
3.文档 解析元素 开始 didStartElement:
4.文档 解析元素 结束 didEndElement:
5.解析 文档元素 的内容 parser foundCharacters:

#import
<UIKit/UIKit.h> @interface ViewController : UIViewController<NSXMLParserDelegate> /** * 全局的集合 用来添加字典的 */ @property(strong,nonatomic) NSMutableArray *arr; /** * 显示对应的 元素名称和value值 */ @property(strong,nonatomic) NSMutableDictionary *dic; /** * 表面上是 str 实际上是 字典中的value值 */ @property(strong,nonatomic) NSString *str; @end #import "ViewController.h" @interface ViewController () @end @implementation ViewController //系统自带 XML文件解析 - (void)viewDidLoad { [super viewDidLoad]; //指定 xml 文件 NSString *path=[[NSBundle mainBundle] pathForResource:@"person" ofType:@"xml"]; //转化成 data 对象 NSData *data=[NSData dataWithContentsOfFile:path]; //为parser 指定初始值 NSXMLParser *parser=[[NSXMLParser alloc] initWithData:data]; parser.delegate=self; BOOL bol=[parser parse]; //返回解析的结果 NSLog(@"bol is %d",bol); } /** * 代理使用的五个方法 * */ /** * 文档解析开始 StartDocument * * @param parser */ -(void)parserDidStartDocument:(NSXMLParser *)parser { //初始化 self.arr=[NSMutableArray array]; } /** * 文档解析结束 EndDocument * * @param parser */ -(void)parserDidEndDocument:(NSXMLParser *)parser { //输出集合的内容 NSLog(@"%@",self.arr); } /** * 文档 解析元素 开始 StartElement * * @param parser 解析的对象 * @param elementName 元素的名称 * @param namespaceURI 命名空间 * @param qName 查的描述信息 * @param attributeDict 属性的字典 */ -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict { //找到文档中User元素 开始初始化字典 dic if ([elementName isEqualToString:@"User"]) { //向字典中添加属性元素 self.dic=[NSMutableDictionary dictionary]; [self.dic setDictionary:attributeDict]; }} /** * 文档 解析元素 结束 EndElement * * @param parser 解析的对象 * @param elementName 元素的名称 * @param namespaceURI 命名空间 * @param qName 查的描述信息 * @param attributeDict 属性的字典 */ -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { //判断元素的关键字 只有符合 name或age 的时候才向字典中添加元素 if ([elementName isEqualToString:@"name"]||[elementName isEqualToString:@"age"]) { //dic中已经包含了 3 个键值对 [self.dic setObject:self.str forKey:elementName]; } //直到找到 User 元素标签时 才向arr中添加字典 即dic else if([elementName isEqualToString:@"User"]) { [self.arr addObject:self.dic]; } } /** * 解析 文件元素 的内容 foundCharacters * * @param parser 解析对象 * @param string 显示的文本内容 */ -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { //将局部的字符串赋值给 str self.str=string; } @end

 

posted @ 2016-03-28 20:38  唐唐_010  阅读(238)  评论(0编辑  收藏  举报