json和xml
开发中出现频率:json 95% xml 5%
json(对于xml) 轻便,在服务器到客服端传输速率高,信息的冗余(没有必要的重复)低 ,缺点就是可读性低(但是可以通过第三方的工具解决)
xml(对于json)可读性 缺点:信息的冗余度高,在服务器到客服端传输速率低
xml解析
常见:plist文件,XIB,网易新闻,新浪新闻
解析xml常用库:GData (第三类)
整个xml文件可以看成一个树
<root > </root> <book id="1" language="ch"> </book> 这些东西在xml中叫节点,xml文件中的第一个节点就根节点 , id和language叫节点属性
一.如何使用GData
底层使用系统的libxml2库, 使用的时候添加libxml2
(1)导入GData库
(2)设置头文件搜索路径
Build Setting--->header search Paths
双击后,点加号
添加 /usr/include/libxml2
//libxml2是系统库,需要到系统的目录下找到。
(3)添加libxml二进制库
Build Phases ---> Link Binary
添加 libxml2.dylib
(4)如果是arc的工程
Build Phases ---> Compile Source File
GDataXmlNode.m 禁止ARC: -fno-objc-arc
二.常用方法
GDataXMLNode
//获取当前节点的值
- (NSString *)stringValue;
//获取当前节点子子节点的个数
- (NSUInteger)childCount;
//获取子节点数组
- (NSArray *)children;
//根据索引获取子节点
- (GDataXMLNode *)childAtIndex:(unsigned)index;
GDataXMLElement : GDataXMLNode
//根据子节点名字获取所有的节点名为name的子节点数组
- (NSArray *)elementsForName:(NSString *)name;
//获取节点的属性
- (NSArray *)attributes;
//根据属性名获取属性节点
- (GDataXMLNode *)attributeForName:(NSString *)name;
GDataXMLDocument //XML节点树
//创建文档节点
- (id)initWithData:(NSData *)data options:(unsigned int)mask error:(NSError **)error;
//获取跟节点
- (GDataXMLElement *)rootElement;
//根据xpath 语法 获取 指定的节点数组
- (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error;