【认识XML】
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。格式统一,跨平台和语言,早已成为业界公认的标准。
【XML语法】
【1、基本术语】
标签/节点:
格式:<节点名> 节点值 </节点名>
如: <root>books</root>
其中root为节点名,books为节点值
根节点:最外层的节点称为根节点
子节点:节点中包含的其它节点都称为该节点的子节点,
一级子节点也称为直接子节点。
属性节点:
如:<Item key="1" value="报纸"> </Item>
其中 key="1" 为属性节点
属性: key="1"
属性名: key
属性值: "1"
【2、xpath语法】
XPath即为XML路径语言,它是一种用来确定XML文档中某部分位置的语
言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。
XPath使用路径表达式来选取 XML文档中的节点或者节点集。这些路径
表达式和我们在常规的电脑文件系统中看到的表达式非常相似。路径表达式是
从一个XML节点到另一个节点、或一组节点的书面步骤顺序。
【XML解析】
1、系统类NSXMLParser比较繁琐
2、第三方开源库GData常用
(1)导入GData库
————add file to ”xml网络解析”
底层使用系统的libxml2库, 使用的时候添加libxml2
(2)添加libxml二进制库
Build Phases ---> Link Binary
添加 libxml2.dylib
(3)设置头文件搜索路径
Build Setting--->header search Path
添加 /usr/include/libxml2
(4)如果是arc的工程
Build Phases ---> Compile Source File
GDataXmlNode.m(非arc的)
填写编译选项:-fno-objc-arc
GData 第三方库 有两种方式解析
1、获取根节点所有元素,遍历所有的子节点
2、使用xpath语法
http://10.0.8.8/sns/my/user_list.php?format=xml&page=1&number=100
练习:
解析XML文件【qfSNSXml.txt】要求:封装JYUser类,用于存储数据模型
GDataXMLNode : NSObject
获取当前节点的值
- (NSString *)stringValue;
//获取当前节点子节点的个数
- (NSUInteger)childCount;
//获取子节点数组
- (NSArray *)children;
//根据索引获取子节点
- (GDataXMLNode *)childAtIndex:(unsigned)index;
GDataXMLElement : GDataXMLNode
//根据节点名字获取所有的节点名为name的节点数组
- (NSArray *)elementsForName:(NSString *)name;
//获取节点的属性
- (NSArray *)attributes;
//根据属性名获取属性节点
- (GDataXMLNode *)attributeForName:(NSString *)name;
GDataXMLDocument : NSObject
//创建文档树
- (id)initWithData:(NSData *)data options:(unsigned int)mask error:(NSError **)error;
//获取跟节点
- (GDataXMLElement *)rootElement;
//根据xpath 语法 获取 指定的节点数组
- (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error;