Json和Xml
来源:互联网 发布:java编程什么系统好 编辑:程序博客网 时间:2024/06/09 23:48
*****************
数据描述信息的语言:①Json②Xml
*****************
①Json
数组、字典互相嵌套
www.bejson.com上直接解析json文件 可以很直观的看
@interface NSJSONSerialization :NSObject
解析json的工具类
+ (id)JSONObjectWithData:(NSData*)data options:(NSJSONReadingOptions)opterror:(NSError **)error;
json解析
typedef NS_OPTIONS(NSUInteger,NSJSONReadingOptions) {
};
返回的内容是可变的还是不可变的(一般就是0 不可变)
*****
从沙盒文件解析json
NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:[[NSFileHandlefileHandleForReadingAtPa
向沙盒文件写json
NSOutputStream *os = [NSOutputStreamoutputStreamToFileAtPath
[os close];
输出流在使用之前一定要打开
*********************
②Xml
html显示信息
出来的比json早
xml声明
最开头
节点:key-value
节点 属性 子节点 值
元素
每个xml只有一个根节点
节点可以同名
注释:
CDATA
[CDATA …]纯文本
属性 键值对
OC提供了一个解析XML 的类
然后导入系统库libxml2
然后设置building settings 的header search paths 的值为GData头文件中注释的目录/usr/include/libxml2
获取xml 中的内容(就是从沙盒文件中读字符串的过程)
NSString *path = [[NSBundlemainBundle]pathForResource:@"xml"ofType:@"txt"];
xml文档类
@interface GDataXMLDocument :NSObject
- (id)initWithXMLString:(NSString*)str options:(unsigned int)maskerror:(NSError **)error;
文档类对象初始化
- (GDataXMLElement *)rootElement;
获取根节点
节点类
@interface GDataXMLElement :GDataXMLNode
取节点的三个方法(还有一个方法
- (GDataXMLNode*)childAtIndex:(unsigned)index 根据索引获取子节点
- (NSArray *)children
所有子节点
- (NSArray *)elementsForName:(NSString*)name
根据节点名 获取节点
获取节点属性的方法
- (NSArray *)attributes;
所有属性
- (GDataXMLNode*)attributeForName:(NSString *)name;
根据属性名字 获取属性值
- (NSString *)XMLString;
节点的原型
- (NSString *)name;
节点的名字
- (NSString *)stringValue;
节点的值
**********************
获取节点的第四种方法:
XPATH 语法
- (NSArray *)nodesForXPath:(NSString*)xpath error:(NSError **)error;
GDataXMLDocument的方法
NSArray *array = [docnodesForXPath:@"/root/books/book/name"error:nil];
多路径
@"/root/books/book/name | /root/books/book/auther/name"
相对路径
@"//name"
相对路径下的绝对路径
@"//book/name"
第一个book目录下的的name
@"//book[1]/name"
最后一个book目录下的name
@"//book[last()]/name"
倒数第二个book目录下的name
@"//book[last() - 1]/name"
前两个book目录下的name
@"//book[position() <3]/name"
第1个到第3个目录下的name(1和3是开)
@"//book[position() < 3][position() <1]/name"
book的属性中有num的节点
@"//book[@num]/name"
book的属性中有id属性 且id值为3的节点
@"//book[@id=3]/name"
@"//book[@id="3"]/name"
**************************
命名空间
一般都是网址
xmlns = uri
xmlns:sp = uri
声明命名空间一般是在根节点的属性里写
名称空间:名
解析的时候要注意缺省的命名空间
- (NSArray*)nodesForXPath:(NSString *)xpath
写xpath的时候要带着命名空间
[docnodesForXPath:@"/xmlns:root/xmlns:books/xmlns:book/book:name"namespaces:{@"xmlns":@"http://www.sina.com.cn",@"book":@"http://www.baidu.com"} error:nil];
- json和xml
- XML和JSON
- xml和json解析
- json和xml解析
- JSON 和XML
- json和xml
- XML和JSON
- JSON和XML比较
- xml和json区别
- json和xml比较
- xml和json
- XML和JSON解析
- JSON和XML
- XML和JSON对比
- XML和JSON笔记
- json和xml解析
- 浅谈JSON和XML
- json和xml解析
- ❤️命名空间
- ♦️交换ab的两种方法
- ❤️初识cocoas 2D -x
- api 与html网址有什么不同
- Fragment的真正显示
- Json和Xml
- 沙盒路径
- 中文编码问题
- 同步下载与异步下载
- ASIHTTPRequest
- SDWebImage
- shell tr命令的使用
- 单例
- Linux常用命令