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