iOS XML 系统自带的解析方法
2016-03-28 20:38
453 查看
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
相关文章推荐
- IOS百度地图自定义大头针和气泡
- 浅谈iOS设计中关于传值的问题
- 减小iOS应用程序的大小
- 一些好用的快捷键
- 在企业内部分发 iOS 应用程序
- iOS录制(或选择)视频,压缩、上传(整理)
- 个人常用的iOS第三方库和插件(不一定全面,但一定好用)
- iOS7使用AFNetworking3.0上传图片时出现的问题-解决方案
- iOS7使用AFNetworking3.0上传图片时出现的问题
- IOS 无限循环小视频播放
- ios第三库-- 屏幕适配Masonry
- iOS 系统跳转
- IOS调试—断点调试以及动态输出
- iOS_CNBlog项目开发 (基于博客园api开发) 下篇
- iOS 第三方支付 支付宝支付
- IOS 应用程序路径
- iOS的触摸事件
- iOS完整学习路线图
- iOS加密解密大全(MD5,SHA,Base64等)
- iOS开发-WebView与JS的交互