使用NSXMLParser解析xml文件
1. 设置委托对象,开始解析
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data]; //或者也可以使用initWithContentsOfURL直接下载文件,但是有一个原因不这么做:
// It's also possible to have NSXMLParser download the data, by passing it a URL, but this is not desirable
// because it gives less control over the network, particularly in responding to connection errors.
[parser setDelegate:self];
[parser parse];
2. 常用的委托方法
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict;
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName;
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError;
static NSString *feedURLString = @"http://www.yifeiyang.net/test/test.xml";
3. 应用举例
- (void)parseXMLFileAtURL:(NSURL *)URL parseError:(NSError **)error
{
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:URL];
[parser setDelegate:self];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
NSError *parseError = [parser parserError];
if (parseError && error) {
*error = parseError;
}
[parser release];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString*)qName attributes:(NSDictionary *)attributeDict{
// 元素开始句柄
if (qName) {
elementName = qName;
}
if ([elementName isEqualToString:@"user"]) {
// 输出属性值
NSLog(@"Name is %@ , Age is %@", [attributeDict objectForKey:@"name"], [attributeDict objectForKey:@"age"]);
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
// 元素终了句柄
if (qName) {
elementName = qName;
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
// 取得元素的text
}
NSError *parseError = nil;
[self parseXMLFileAtURL:[NSURL URLWithString:feedURLString] parseError:&parseError];
分享到:
相关推荐
ios xml解析 NSXMLParser。 NSXMLParser是基于SAX的解析方式。NSXMLParser采用了委托设计模式,因此他的实现类需要采用协议并支持委托。NSXMLParser解析XML需要委托NSXMLParserDelegate实现。
xml解析的两种常用方式, DOM解析:一次性将整个XML文档加载进内存,比较适合解析小文件,例如:GDataXml解析 ...SAX解析:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件,例如:NSXMLParser解析
主要介绍了使用Swift实现iOS App中解析XML格式数据的教程,讲到了iOS中提供的NSXMLParser和NSXMLParserDelegate两个API的用法,需要的朋友可以参考下
DOM:一次性将整个XML数据加载进内存进行解析,比较适合解析小文件SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件 2、IOS中XML解析方案有很多种: 2-1、第三方框架: libxml2:纯C语言...
SHXMLParser 是一个基于 NSXMLParser 构建的易用的 XML 解析器,可转换 XML 数据到 Objective-C 对象。 标签:SHXMLParser
在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。问题是应该选择哪一个呢? 解析 XML 通常有两...
Swift RSS阅读器使用Swift 2,Xcode 7和iOS 9构建RSS ... 使用NSXMLParser解析xml 。 将xml转换为基于swift的数组对象。 列出UITableView记录。 单击标题时,将显示详细信息页面。 详细信息页面将在UIWebView加载发布
xml转字典,采用系统NSXMLParser解析,轻轻松松一句代码完成xml转换字典操作
GDataXMLNode用于解析xml文件,比IOS自带的NSXmlParser好用的多,省去了代理回调的麻烦
Axt受到NSXMLParser极大启发,它非常适合解析XML,但不适用于HTML。 HTML通常格式不正确,这使其不适用于NSXMLParser 。 在这种情况下, AXHTMLParser提供了可靠且可靠的行为。为什么要使用SAX解析器? 通常, 解析...
在Swift中实现的简单XML解析器这是什么? 这是一个受SwiftyJSON和SWXMLHash启发的XML解析器。 Foundation框架中的NSXMLParser是一种“ SAX”解析器。 它具有足够的性能,但是在Swift中实现了一点inc Simple XML ...
SWXML哈希 SWXMLHash是在Swift中解析XML的相对简单的方法。 如果您熟悉NSXMLParser ,则此库是围绕它的简单包装。 从概念上讲,它提供了从XML到数组字典(又名哈希)的转换。 该API从中获得了很多启发。内容要求iOS ...
美团网的团购信息解析和显示(IOS版),主要是用自带的NSXMLParser来解析的
ios平台下对于NSXMLParser类的使用,一个简单的demo,希望有帮助
VMXMLParserSwift 2.0中的NSXMLParser包装器特征: 基于关闭响应作为字典数组Unicode支持截屏样例代码var url:String=...= nil){ println(error) }else{ println(tags!) } })样品回复({{description =“这个解析器能...
iOS 的简单轻量级 XML 解析器AEXML是一个其中包括三类: 班级描述AEXML元素基类AEXML文档继承自 AEXMLElement AEXML解析器NSXMLParser 的简单包装器这不是强大的全功能 XML 解析器(目前),而是非常简单、智能且...