美文网首页与时俱进的IT
UI(二十七)数据解析

UI(二十七)数据解析

作者: 社会主义顶梁鹿 | 来源:发表于2018-07-30 18:00 被阅读0次

http-//blog.sina.com.cn/s/blog_6ae8b50d0101apja.html

数据解析:从事先规定好的格式中提取数据

//NSJSONSerialization 解析JSON数据

 //+ (nullable id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;解析JSON数据的方法

 #pragma mark ****JSON数据解析****

 一、JSON解析

 1、概念:Javaacript object Notation 轻量级的数据交换格式,采用完全独立于语言的文本格式,被称为理想的数据交换语言,易与人阅读和便携,同时相同数据用JSON编辑所占的内存更小

 2、结构

 (1)对象、字典

 以‘{’开始以‘}’结束,名称和值之间用‘:’隔开。多个‘名称/值’对之间用‘,’隔开。

 例如: {"name":"Jay","age":22}

 (2)数组

 以‘[’开始以‘]’结束,中间是数据,数据用‘,’隔开。

 例如: ["Jay","二狗"]

 "字符串"--NSString类型;18--NSNumber类型;{}--NSDictionary;[]--NSArray

 3、实例

 4、解析方法

 (1)第三方框架:JSONKit、SBJSON、TouchJSON

 (2)系统提供的解析方法:NSJSONSerialization

 #pragma mark ****XML数据解析****

 二、XML解析

 1、概念:可扩展标记语言

 2、XML数据结构

 (1)

 <标签名> **开始标签

 ...具体的值

  **结束标签  =字符串(相当于字符串)

 (2)

 <标签名>

    <标签名1>888

    <标签名1>666

  =数组

 (3)

 <标签名>

<不同的标签名1>XXX

<不同的标签名2>KKK

  = 字典

 3、XML数据解析

 GDataXMLNode:用来解析XML文件

  (1)GDataXMLDocument 读取文档

  (2)GDataXMLElement 读取文档里面的元素 可以通过具体的方法转换成OC需要的数据·1

 **使用GDataXMLNode

 1、需要导入libxml2

 2、需要在bulid setting -> header search paths ->添加/usr/include/libxml2

#pragma mark ---练习实战---

NSString *path = [[NSBundle mainBundle]pathForResource:@"name.txt" ofType:nil];

 //NSData 可以存储任意类型的数据

 NSData *data = [NSData dataWithContentsOfFile:path];

 //NSJSONSerialization 解析JSON数据

 //+ (nullable id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;解析JSON数据的方法

#pragma mark ****JSON数据解析****

 //JSONObjectWithData这个方法返回值是ID类型 可以使用JSON数据中最外层的数据类型去接收

 NSArray *list = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

 NSArray *modelArray = [UserModel arrayOfModelsFromDictionaries:list error:nil];

 UserModel *model = modelArray[0];

 NSLog(@"%@",model.address);

#pragma mark ****XML数据解析****

 //1、读取文件路径、内容

 NSString *xmlpath = [[NSBundle mainBundle]pathForResource:@"github.xml"ofType:nil];

 NSString *content = [NSString stringWithContentsOfFile:xmlpath encoding:NSUTF8StringEncoding error:nil];

 NSLog(@"%@",content);

 //2、通过GDataXMLDocument读取XML文件

 GDataXMLDocument *booksDocument = [[GDataXMLDocumentalloc]initWithXMLString:content encoding:NSUTF8StringEncoding error:nil];

 //取出XML里面最外层的元素

 //booksDocument.rootElement

 //读取GDataXMLElement对应的OC数据类型

 //- (NSArray *)elementsForName:(NSString *)name; 返回值是一个数组

 NSArray *elements = [booksDocument.rootElement elementsForName:@"book"];

//    NSLog(@"%@",elements);//GDataXMLElement类型

 GDataXMLElement *element = elements[0];

 NSArray *nameElementList = [element elementsForName:@"name"];

 NSString *name = [nameElementList.firstObject stringValue];

 NSLog(@"%@",name);

 //info 具体书的内容(名字 价格)

 NSMutableDictionary *info = [NSMutableDictionary dictionary];

 //resultList解析完成之后的数组 存的字典

 NSMutableArray *resultList = [NSMutableArray array];

 for (GDataXMLElement *element inelements) {

 NSString *name = [[element elementsForName:@"name"].firstObject stringValue];

 NSString *price = [[element elementsForName:@"price"].firstObject stringValue];

[info setObject:name forKey:@"name"];

[info setObject:price forKey:@"price"];

[resultList addObject:info];

    }

相关文章

网友评论

    本文标题:UI(二十七)数据解析

    本文链接:https://www.haomeiwen.com/subject/ygzfvftx.html