使用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];
分享到:
相关推荐
在Objective-C中,我们可以利用苹果提供的`NSXMLParser`类来解析XML数据。本示例("XMLParserDemo")将深入探讨如何使用`NSXMLParser`进行XML解析。 `NSXMLParser`是Apple的Foundation框架的一部分,它提供了一个...
在iOS开发中,解析XML文件是一项常见的任务,特别是在与服务器进行数据交互时。XML(Extensible Markup Language)是一种用于标记数据的语言,具有良好的结构性和可读性,使得它成为网络数据传输的常用格式。本篇...
ios xml解析 NSXMLParser。 NSXMLParser是基于SAX的解析方式。NSXMLParser采用了委托设计模式,因此他的实现类需要采用协议并支持委托。NSXMLParser解析XML需要委托NSXMLParserDelegate实现。
以下是如何使用NSXMLParser解析XML的步骤: 1. 创建一个NSXMLParser对象,传入XML数据源。 2. 实现NSXMLParserDelegate协议,定义处理XML元素开始、结束、属性等事件的方法。 3. 开始解析过程,`[parser parse]`。 ...
XML文件结构清晰,易于理解,但在iOS中解析XML数据并非内置功能,需要借助第三方库或者Apple提供的API。苹果提供了`NSXMLParser`类,这是一个基于事件驱动的XML解析器,适用于小型XML文档。下面我们将详细介绍如何...
总结,iOS应用源码"xmlparser"展示了如何使用`NSXMLParser`解析XML文件,并将解析到的数据存储在模型对象中。同时,源码还可能包含了如何将这些数据重新导出为XML文件的过程。理解并熟练运用XML解析是iOS开发者必备...
这篇博客文章可能深入探讨了如何利用`NSXMLParser`来解析XML数据。 `NSXMLParser`是基于事件驱动的解析器,它会逐个处理XML文档的元素、属性和文本。当遇到特定的XML标记时,如开始标签、结束标签或文本节点,`...
GDataXML库(又称libxml2)是一个Objective-C封装的XML解析库,它提供了一种更面向对象的方式来解析XML。与NSXMLParser不同,GDataXML支持XPath查询,允许开发者更方便地定位和提取XML文档中的特定节点。例如,可以...
总结一下,这个"iOS xml解析和json解析demo"将涵盖如何在iOS应用中解析XML数据,包括使用NSXMLParser和XMLParser,以及如何解析和序列化JSON数据,包括使用内置的JSONSerialization类和可能涉及的一些第三方库。...
总之,这个源码示例可能展示了如何使用NSXMLParser解析XML文件,提取所需数据,并将数据存储回XML文件的过程。通过深入理解XML解析和数据持久化机制,开发者可以更好地处理iOS应用中的数据交换和存储需求。
- 解析XML:调用`parse`方法,如果成功,可以获取到一个`CFXMLNode`对象树。 - 访问节点:通过`CFXMLNode`对象,可以获取元素、属性和文本内容,方便转换成自定义对象。 ```swift let xmlDocument = XMLDocument...
在iOS中,有多种解析XML的方法,如NSXMLParser、GDataXMLNode和libxml等。libxml是一个功能强大的C语言库,提供了XML解析、DOM操作和XPath等功能,适用于需要高效、低级操作的场景。 在这个通用类中,核心是使用...
xml解析的两种常用方式, DOM解析:一次性将整个XML文档加载进内存,比较适合解析小文件,例如:GDataXml解析 ...SAX解析:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件,例如:NSXMLParser解析
原生的iOS SDK提供了一个叫做NSXMLParser的类来处理XML解析,但它的使用相对复杂,且对于大型或复杂的XML文档可能效率不高。因此,"IOS版本XML解析类"通常指的是第三方库,如GDataXML,这是一个在Objective-C中实现...
本文将深入探讨两种在iOS中解析XML的主要方法:苹果自带的NSXMLParser以及第三方库TBXML。 首先,苹果提供的NSXMLParser是Objective-C中的一个类,它遵循事件驱动的模型来解析XML文档。当XML文档被解析时,...
总之,“ios-XML解析.zip”这个资源可能包含了关于如何在iOS应用中使用XML解析器(如`NSXMLParser`或`XMLParser`)解析XML数据,并将解析结果展示在表格视图上的示例代码和指南。通过学习和实践这些内容,开发者可以...
在iOS中,XML解析通常有以下几种方式:NSXMLParser、GDataXML、XMLReader以及libxml2库。其中,XMLReader因其性能和内存管理的优势,成为处理大量XML数据的理想选择。 首先,我们需要了解XML的基本结构。XML文档由...
此压缩包"IOS应用源码——XML解析.rar"包含的源码示例,很可能是用于演示如何在iOS应用中解析XML数据。在本文中,我们将深入探讨iOS中的XML解析技术,并通过相关知识点的详细讲解,帮助你理解和掌握这一技能。 首先...
在解析XML数据前,设计好对应的数据模型,这将帮助你更好地组织和处理解析结果。可以创建自定义的类来表示XML文档的元素和属性。 综上所述,解决iOS中的XML解析问题涉及选择合适的解析器,理解和实现解析器的代理...
NSXMLParser遵循SAX事件驱动的解析模型,它在解析XML文件时会触发一系列的代理方法。开发者需要实现这些方法来处理解析过程中的事件,如元素开始、结束、字符数据等。这种方式内存占用低,但需要编写较多的代码来...