您的位置:首页 > 其它

XML解析

2015-07-04 16:45 295 查看
XML文档格式如下:

<?xml version = "1.0" encoding = "UTF-8"?>
//元素

<book> 
<name>Xml应用系列教程</name> 
<auhtor>学路的小孩</auhtor> 
<date>2009-03-23</date>
</book>



JSON和XML表示同一个文件时,JSON的体积更小.

XML解析有2种大类:

1.DOM:将整个XML文件一口气加载到内存中,合适解析小文件,可以随意访问元素

2.SAX:从根元素开始加载,按顺序一个一个元素往下解析,适合大文件,不能往回退访问之前的元素

iOS中解析XML有几种方式:

1.NSXMLParser:SAX,苹果SDK自带的

2.libxml2:纯C语言的,同时支持DOM和SAX

3.GDataXML:DOM,google开发,基于libxml2

解析方式的选择:

1.大文件:NSXMLParser/libxml2

2.小文件:GDataXML

1>使用NSXMLParser方法:

代理方式:调用<NSXMLParserDelegate>

- (void)XMLParserWithData:(NSData *)data {
	//创建解析器
	NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
	//设置解析器代理
	parser.delegate = self;
	
#warning mark 同步解析
	//开始解析
	[parser parse];
}
代理方法:

#pragma mark -NSXMLParserDelegate
//开始解析文档头部位置:<?xml version = "1.0" encoding = "UTF-8"?>
- (void)parserDidStartDocument:(NSXMLParser *)parser {
}
//开始解析元素,每个元素开始解析的时候都会到这里
- (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)parserDidEndDocument:(NSXMLParser *)parser {
}


2>GDataXML使用方法

需要配置环境:

2.1将GDataXML库包含进来



2.2将动态链接库libxml2.dylib加进来

2.3将动态链接库指向使用的头文件路径

在项目->Header search paths中增加/usr/include/libxml2

2.4在Other linker flags中进行连接 +"-lxml2"

2.5将GDataXMLNode.m设置为MRC

在项目->build phases -> 双击文件右侧加入"-fno-objc-arc"

可以开始用了:

- (void)GDataXMLWithData:(NSData *)data {
	//1.加载文档
	GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
	//2.获得根元素
	GDataXMLElement *rootElement = doc.rootElement;
	
	//3.获取所有book的元素
	NSArray *elements = [rootElement elementsForName:@"book"];
}


--end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: