加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML解析

发布时间:2020-12-16 05:45:02 所属栏目:百科 来源:网络整理
导读:XML文档格式如下: ?xml version = "1.0" encoding = "UTF-8"? //元素 book nameXml应用系列教程/name auhtor学路的小孩/auhtor date2009-03-23/date/book JSON和XML表示同一个文件时,JSON的体积更小. XML解析有2种大类: 1.DOM:将整个XML文件一口气加载到内存

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读