复习知识点:XML解析数据,JOSN解析数据,GET请求数据,POST请求数据
GDataXMLDocument-XML解析
#pragma mark - ======== Dom XML解析
- (IBAction)domParserActionXML_Document:(id)sender { // 第一步 引入动态库
// 1 获取文件路径
NSString *Path = [[NSBundle mainBundle] pathForResource:@"StudentIfor_xml" ofType:@"txt"];
// 2.根据路经获取data类型数据
NSData *data = [NSData dataWithContentsOfFile:Path];
// 2.1 初始化存储数据的数组
self.dataArray = [NSMutableArray array];
// 3.设置dom解析(创建解析文档)
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options: error:nil];
// 4.获取根节点
GDataXMLElement *rootElement = document.rootElement;
// 5.遍历获取相对应的子节点
for (GDataXMLElement *studentElement in rootElement.children) {
// NSLog(@"studentelement %@", studentElement);
Student *student = [[Student alloc] init];
// 遍历子节点的子节点
for (GDataXMLElement *stuElement in studentElement.children) {
// NSLog(@"stuelement %@", stuElement); // 根据标签给student对象赋值
// stuElement.name 标签的名字
// stuElement.stringValue 标签的值
// KVC赋值
[student setValue:stuElement.stringValue forKey:stuElement.name];
}
[self.dataArray addObject:student];
}
// 遍历检验
for (Student *stu in self.dataArray) {
NSLog(@"name = %@ gender = %@ age = %ld hobby = %@", stu.name, stu.gender, stu.age, stu.hobby);
}
}
系统自带的JSON解析
#pragma mark - 系统自带的JSON数据解析
- (IBAction)foundationParserActionJSONDocument:(id)sender {
// 1.获取文件路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"StudentInfor_json" ofType:@"txt"];
// 2.根据路径获取NSData
NSData *data = [NSData dataWithContentsOfFile:path];
// 2.5 对存储数据的数组初始化
self.dataArray = [NSMutableArray array];
// 3.解析
NSArray *dataArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; #pragma mark - jsonkit解析JSON数据解析 与系统自带的只差这一句
// NSArray *dataArray = [data objectFromJSONData]; // 遍历数组 KVC赋值
for (NSDictionary *Dic in dataArray) {
Student *stu = [[Student alloc] init];
// 将字典的值赋值给对象
[stu setValuesForKeysWithDictionary:Dic];
// 将对象添加到数组中
[self.dataArray addObject:stu];
}
for (Student *stu in self.dataArray) {
NSLog(@"name = %@ gender = %@ age = %ld hobby = %@", stu.name, stu.gender, stu.age, stu.hobby);
}
}
GET异步请求
#pragma mark - get 异步请求
- (IBAction)getRequest:(id)sender {
// Block 实现
// 创建url
NSURL *url = [NSURL URLWithString:GET_URL];
// 创建session对象
NSURLSession *session = [NSURLSession sharedSession];
// 创建task请求任务
// NSURLSession 是基于任务去完成相关的事件的
// NSURLSessionTask 所有的任务均放在这个里面实现
NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// 解析相关的数据
if (nil == error) {
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@",dic);
}
}];
// 核心步:启动任务 (千万不能忘记)
// NSURLSessionTask 实出来后处于挂起状态,如果不启动他永远不会走Block中的实现内容
[task resume];
}
POST异步请求
#pragma mark - post 异步请求
- (IBAction)postRequest:(id)sender {
// 创建url
NSURL *url = [NSURL URLWithString:POST_URL];
// 创建请求
NSMutableURLRequest *mutableRequset = [NSMutableURLRequest requestWithURL:url];
// 核心设置body
NSString *bodyString = POST_BODY;
NSData *postData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
[mutableRequset setHTTPMethod:@"POST"];
[mutableRequset setHTTPBody:postData]; // 创建session
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithRequest:mutableRequset completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// 解析
if (nil == error) {
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@", dic);
}
}];
// 启动任务
[task resume];
}
复习知识点:XML解析数据,JOSN解析数据,GET请求数据,POST请求数据的更多相关文章
- XML数据的解析
XML数据的解析 相比于JSON数据解析而言,XML数据解析可能会让更多的童鞋感觉到吃力,对我来说,同样认为JSON数据好像让人感觉比较友好,不过对于程序开发者来说,无非就是这两种数据解析占比较大的部 ...
- json和xml数据的解析
一 json数据 1一条json就像一个对象,也想像OC中的数组,且内嵌了很多键值对字典 {"name" : "jack", "age" : ...
- Android网络之数据解析----SAX方式解析XML数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- 多线程与网络之JSON和XML数据的解析
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- iOS开发网络篇—XML数据的解析
iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是 ...
- CDATA(不应由XML解析器进行解析的文本数据)、CDATA的使用场景
1.1. CDATA: CDATA(Unparsed Character Data)指的是不应由XML解析器进行解析的文本数据. 因为XML解析器会将“<”(新元素的开始)和“&”(字符 ...
- android基础---->XMl数据的解析
在网络上传输数据时最常用的格式有两种,XML和JSON,下面首先学一下如何解析XML格式的数据,JSON的解析可以参见我的博客(android基础---->JSON数据的解析).解析XML 格式 ...
- Ajax--解析JSON数据与解析XML数据
一.Ajax解析JSON数据 nav.json(json数据) [ { "link":"http://www.jd.com", "src": ...
- NPOI操作EXCEL(三)——反射机制进行excel表格数据的解析
我们先来回忆回忆上篇文章讲到的通过xml配置文件实现excel批量模板解析的整体思路: 1.对每个excel模板制定xml配置规则集,实现xml配置文件的解析服务 2.为每个excel模板制定DTO, ...
随机推荐
- 开始学习Lucene
最近百度的魏则西事件闹的沸沸扬扬,突然有个想法:是否百度的中文搜索目前还没有人能挑战它的地位呢? 哈哈,想的太多了,正巧毕业设计就和搜索有关,当时只是大致了解了概念:如分词.排序.索引.爬虫等,并以此 ...
- SERVLET API 中 forward() 与 redirect()的区别?
答:前者仅是容器中控制权的转向, 在客户端浏览器地址栏中不会显示出转向后的地址: 后者则是完全的跳转, 浏览器将会得到跳转的地址, 并重新发送请求链接. 这样, 从浏览器的地址栏中可以看到跳转后的链接 ...
- ORA-02396: exceeded maximum idle time, please connect again的原因
一般为了防止过多活动的session占用资源,可以对允许连接到数据库的session个数,已连接到数据库的session空闲时间等进行限制(当然也可以对尝试连接次数等其它很多内容进行限制).方式就是可 ...
- Android 开发笔记“关闭默认键盘”
1.打开AndroidManifest.xml文件 2.在对应的activity中增加配置信息 android:windowSoftInputMode="stateHidden"
- HTML+CSS笔记 CSS进阶
文字排版 字体 我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性. 语法: body{font-family:"宋体";} 这里注意不要设置不常用的字体,因为如果 ...
- Qt中Ui名字空间以及setupUi函数的原理和实现 <转>
用最新的QtCreator选择GUI的应用会产生含有如下文件的工程 下面就简单分析下各部分的功能. .pro文件是供qmake使用的文件,不是本文的重点[不过其实也很简单的],在此不多赘述. 所以呢, ...
- Oracle SQL篇(四)group by 分组与分组的加强 rollup
分组操作group by 和分组的强化(rollup) 分组操作和分组函数的使用,对于编写SQL语句的人来说,是最基本的概念. 我们来看下面的例子: 在这里我们使用员工表EMP scott@D ...
- CPU卡
CPU卡芯片通俗地讲就是指芯片内含有一个微处理器,它的功能相当于一台微型计算机.人们经常使用的集成电路卡(IC卡)上的金属片就是CPU卡芯片.CPU卡可适用于金融.保险.交警.政府行业等多个领域,具有 ...
- Android Studio 新建项目的R文件丢失的解决方法
最近Android Studio炒的比较热,于是笔者决定赶赶时髦,从Eclipse转到了Android Studio.不幸的是,用Android Studio创建项目的时候就遇到了一个比较尖锐的问题— ...
- live555学习经验链接一
live555学习经验链接:http://xingyunbaijunwei.blog.163.com/blog/#m=0&t=1&c=fks_084071082087086069082 ...