1.什么是XML
“当 XML(扩展标记语言)于 1998 年 2 月被引入软件工业界时,它给整个行业带来了一场风暴。有史以来第一次,这个世界拥有了一种用来结构化文档和数据的通用且适应性强的格式,它不仅仅可以用于 WEB,而且可以被用于任何地方。”
---《Designing With Web Standards Second Edition》, Jeffrey Zeldman
XML是作为一种数据格式,主要用于描述数据和存储数据
2.一个常见的XML数据一般有以下部分组成
文档声明
元素节点(Element)
属性(Attribute)
3.XML解析
XML解析:通过XML格式,提取XML描述的数据
XML主要有两种解析方式:DOM和SAX
DOM解析:读入整个XML文档并且构建一个驻留在内存的树结构(节点数),通过遍历数的结构可以检索任意XML节点,读取它的属性和值
SAX解析:是一个基于通知的模式,一边读取XML文档一边处理,不必等整个文档加载完成后才采取操作,一边读取节点,一边处理数据
DOM解析使用于小数据量的XML,SAX解析适用于大数据量的XML
4.XML解析框架
iOS SDK提供:NSXMLParser和libxml2两个类库
第三方框架:TBXML、TouchXML、KissXML、TinyXML和GDataXML
解析框架的对比
5、我们该怎么选择
读取小XML,支持XPath,建议使用TouchXML、KissXML、GDataXML
读取、写入小XML,建议使用KissXML或者GDataXML
读取大XML(需要性能),建议使用TBXM、libXML
第三方框架NSXML(NSXMLParser)
6、GDataXMLNode框架的使用
Github下载地址https://github.com/wddonline/GDataXMLNode
分为下列几项步骤
1.导入libxml2.2.tbd
2.在编译之前,找到Header Search Paths 输入/usr/include/libxml2
3.先编译一下,查看是不是错误
读取XML
向XML中写入数据
使用Xpath进行读写
-(void)readXMLXpath{ NSString *filePath = [[NSBundle mainBundle]pathForResource:@"xml2" ofType:@"xml"];
NSData *data = [NSData dataWithContentsOfFile:filePath]; GDataXMLDocument *doc = [[GDataXMLDocument alloc]initWithData:data error:nil]; NSString *Xpath = @"/catalog/cd/price"; NSArray *array = [doc nodesForXPath:Xpath error:nil]; for (GDataXMLElement *string in array) {
NSLog(@"节点名%@ 节点值%@ ",string.name,string.stringValue);
}
}