XML解析
在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。这篇文章使用了NSXMLParser。
解析 XML 通常有两种方式,DOM 和 SAX:
NSXMLParser是基于SAX的解析方式。NSXMLParser采用了委托设计模式,因此他的实现类需要采用协议并支持委托。NSXMLParser解析XML需要委托NSXMLParserDelegate实现。 1、初始化NSXMLParser
要使用NSXMLParser要先创建它,设置各种属性,主要用到以下几个方法: initWithContentsOfURL 通过NSURL创建解析器 initWithData 通过NSData创建解析器 setDelegate 为解析器定义委托 parse 运行解析器
2、委托方法
主要使用一下委托方法:
?
// xml文件的样式 的样式有多种样式,标准的是把数据存放在子节点中,还有就是比较简单的读取就是把数据直接存在属性里面
// 第一种,这是自己写出来的一种,把数据存储在子节点中,读取相对麻烦一些
// 第二种是从中国气象网的api上街区出来的一段,是把数据存储在了属性中,比较容易读取数据
// 下面是解析第一种样式的代码:
// 头文件
#import @interfaceRootViewController :UIViewController<</span>NSXMLParserDelegate> #pragma mark -声明--属性 @property(nonatomic,retain)NSMutableArray*messageeListArray;//数据存储的地方 @property(nonatomic,retain)NSString*fromTagFlag;开始标签 @end
// 实现文件
#import"RootViewController.h"
@interfaceRootViewController() @end @implementationRootViewController - (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil { } - (void)viewDidLoad { NSData*urlData = [NSURLConnectionsendSynchronousRequest:requestreturningResponse:nilerrornil]; } #pragma mark - NSXMLParser Delegate - #pragma mark文档开始读取 - (void)parserDidStartDocument:(NSXMLParser*)parser { } #pragma mark解析标签开始 - (void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName attributes:(NSDictionary*)attributeDict { } #pragma mark获取到标签对应的数据 - (NSXMLParser*)parser foundCharacters:(NSString*)string { } #pragma mark -解析标签结束 - (NSXMLParser*)parser didEndElement:(NSString*)qName { .fromTagFlag=; } #pragma mark文档结束读取 - (void)parserDidEndDocument:( } #pragma mark -重写----dealloc方法 - (void)dealloc { } @end
// 第二种xml样式解析的代码
// 头文件
#import <</span>NSXMLParserDelegate> #pragma mark -声明--属性 数据存储的地方 开始标签 @end
// 实现文件
];
*urlString =@"http://flash.weather.com.cn/wmaps/xml/beijing.xml"; requestWithURL:url1]; fromTagFlag= elementName; } } dealloc]; } @end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |