1. GDataXMLDocument-XML解析
  1. #pragma mark - ======== Dom XML解析
  2. - (IBAction)domParserActionXML_Document:(id)sender {
  3.  
  4. // 第一步 引入动态库
  5. // 1 获取文件路径
  6. NSString *Path = [[NSBundle mainBundle] pathForResource:@"StudentIfor_xml" ofType:@"txt"];
  7. // 2.根据路经获取data类型数据
  8. NSData *data = [NSData dataWithContentsOfFile:Path];
  9. // 2.1 初始化存储数据的数组
  10. self.dataArray = [NSMutableArray array];
  11. // 3.设置dom解析(创建解析文档)
  12. GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options: error:nil];
  13. // 4.获取根节点
  14. GDataXMLElement *rootElement = document.rootElement;
  15. // 5.遍历获取相对应的子节点
  16. for (GDataXMLElement *studentElement in rootElement.children) {
  17. // NSLog(@"studentelement %@", studentElement);
  18. Student *student = [[Student alloc] init];
  19. // 遍历子节点的子节点
  20. for (GDataXMLElement *stuElement in studentElement.children) {
  21. // NSLog(@"stuelement %@", stuElement);
  22.  
  23. // 根据标签给student对象赋值
  24. // stuElement.name 标签的名字
  25. // stuElement.stringValue 标签的值
  26. // KVC赋值
  27. [student setValue:stuElement.stringValue forKey:stuElement.name];
  28. }
  29. [self.dataArray addObject:student];
  30. }
  31. // 遍历检验
  32. for (Student *stu in self.dataArray) {
  33. NSLog(@"name = %@ gender = %@ age = %ld hobby = %@", stu.name, stu.gender, stu.age, stu.hobby);
  34. }
  35. }

系统自带的JSON解析

  1. #pragma mark - 系统自带的JSON数据解析
  2. - (IBAction)foundationParserActionJSONDocument:(id)sender {
  3. // 1.获取文件路径
  4. NSString *path = [[NSBundle mainBundle] pathForResource:@"StudentInfor_json" ofType:@"txt"];
  5. // 2.根据路径获取NSData
  6. NSData *data = [NSData dataWithContentsOfFile:path];
  7. // 2.5 对存储数据的数组初始化
  8. self.dataArray = [NSMutableArray array];
  9. // 3.解析
  10. NSArray *dataArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
  11.  
  12. #pragma mark - jsonkit解析JSON数据解析 与系统自带的只差这一句
  13. // NSArray *dataArray = [data objectFromJSONData];
  14.  
  15. // 遍历数组 KVC赋值
  16. for (NSDictionary *Dic in dataArray) {
  17. Student *stu = [[Student alloc] init];
  18. // 将字典的值赋值给对象
  19. [stu setValuesForKeysWithDictionary:Dic];
  20. // 将对象添加到数组中
  21. [self.dataArray addObject:stu];
  22. }
  23. for (Student *stu in self.dataArray) {
  24. NSLog(@"name = %@ gender = %@ age = %ld hobby = %@", stu.name, stu.gender, stu.age, stu.hobby);
  25. }
  26. }

GET异步请求

  1. #pragma mark - get 异步请求
  2. - (IBAction)getRequest:(id)sender {
  3. // Block 实现
  4. // 创建url
  5. NSURL *url = [NSURL URLWithString:GET_URL];
  6. // 创建session对象
  7. NSURLSession *session = [NSURLSession sharedSession];
  8. // 创建task请求任务
  9. // NSURLSession 是基于任务去完成相关的事件的
  10. // NSURLSessionTask 所有的任务均放在这个里面实现
  11. NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
  12. // 解析相关的数据
  13. if (nil == error) {
  14. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
  15. NSLog(@"%@",dic);
  16. }
  17. }];
  18. // 核心步:启动任务 (千万不能忘记)
  19. // NSURLSessionTask 实出来后处于挂起状态,如果不启动他永远不会走Block中的实现内容
  20. [task resume];
  21. }

POST异步请求

  1. #pragma mark - post 异步请求
  2. - (IBAction)postRequest:(id)sender {
  3. // 创建url
  4. NSURL *url = [NSURL URLWithString:POST_URL];
  5. // 创建请求
  6. NSMutableURLRequest *mutableRequset = [NSMutableURLRequest requestWithURL:url];
  7. // 核心设置body
  8. NSString *bodyString = POST_BODY;
  9. NSData *postData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
  10. [mutableRequset setHTTPMethod:@"POST"];
  11. [mutableRequset setHTTPBody:postData];
  12.  
  13. // 创建session
  14. NSURLSession *session = [NSURLSession sharedSession];
  15. NSURLSessionDataTask *task = [session dataTaskWithRequest:mutableRequset completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
  16. // 解析
  17. if (nil == error) {
  18. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
  19. NSLog(@"%@", dic);
  20. }
  21. }];
  22. // 启动任务
  23. [task resume];
  24. }

复习知识点:XML解析数据,JOSN解析数据,GET请求数据,POST请求数据的更多相关文章

  1. XML数据的解析

    XML数据的解析 相比于JSON数据解析而言,XML数据解析可能会让更多的童鞋感觉到吃力,对我来说,同样认为JSON数据好像让人感觉比较友好,不过对于程序开发者来说,无非就是这两种数据解析占比较大的部 ...

  2. json和xml数据的解析

    一 json数据 1一条json就像一个对象,也想像OC中的数组,且内嵌了很多键值对字典 {"name" : "jack", "age" : ...

  3. Android网络之数据解析----SAX方式解析XML数据

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  4. 多线程与网络之JSON和XML数据的解析

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. iOS开发网络篇—XML数据的解析

     iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是 ...

  6. CDATA(不应由XML解析器进行解析的文本数据)、CDATA的使用场景

    1.1. CDATA: CDATA(Unparsed Character Data)指的是不应由XML解析器进行解析的文本数据. 因为XML解析器会将“<”(新元素的开始)和“&”(字符 ...

  7. android基础---->XMl数据的解析

    在网络上传输数据时最常用的格式有两种,XML和JSON,下面首先学一下如何解析XML格式的数据,JSON的解析可以参见我的博客(android基础---->JSON数据的解析).解析XML 格式 ...

  8. Ajax--解析JSON数据与解析XML数据

    一.Ajax解析JSON数据 nav.json(json数据) [ { "link":"http://www.jd.com", "src": ...

  9. NPOI操作EXCEL(三)——反射机制进行excel表格数据的解析

    我们先来回忆回忆上篇文章讲到的通过xml配置文件实现excel批量模板解析的整体思路: 1.对每个excel模板制定xml配置规则集,实现xml配置文件的解析服务 2.为每个excel模板制定DTO, ...

随机推荐

  1. std::map中函数用法集合

    1 STL的map表里有一个erase方法用来从一个map中删除掉指令的节点  2 eg:  3 map<string,string> mapTest;  4 typedef map< ...

  2. 关于css的默认宽度

    <div class="boxa"> <div class="boxb">我是div</div> </div> ...

  3. POJ 1459 Power Network(网络流 最大流 多起点,多汇点)

    Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 22987   Accepted: 12039 D ...

  4. hough变换中,直线方程从XY空间转换到参数空间的转换过程

    XY空间直线方程:y=kx+b 参数空间直线方程:xcosθ+ysinθ=ρ 直线方程从XY空间转换到参数空间过程的转换过程: k=tan(π-α)=tan(-α)=-tanα=-cotθ=-cosθ ...

  5. NSArray 与 NSMutableArray 的排序

    由于集合的使用过程中,经常需要对数组进行排序操作,此博客用于总结对在OC中对数组排序的几种方法 1.当数组中存放的是Foundation框架中提供的对象时,直接使用 compare:方法 如:NSSt ...

  6. 【转载】设备坐标(窗口/window)和逻辑坐标(视口/viewport)

    一.预备知识 1.窗口是基于逻辑坐标的. 2.视口是基于设备坐标. 3.设备坐标是以像素为单位的,逻辑坐标是以.cm,m,mm,..... 4.系统最后一定要把逻辑坐标变为设备坐标. 5.设备坐标有3 ...

  7. USACO Section 5.4 TeleCowmunication(最小割)

    挺裸的一道最小割.把每台电脑拆成一条容量为1的边,然后就跑最大流.从小到大枚举每台电脑,假如去掉后 最大流=之前最大流+1,那这台电脑就是answer之一了. -------------------- ...

  8. Android 开发笔记“context和getApplicationContext”

    在android中常常会遇到与context有关的内容 浅论一下context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder( ...

  9. 【LeetCode题意分析&解答】33. Search in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  10. pyhton10min系列之程序员的浪漫-足迹生成器,有视频教程

    记录去过的足迹 本文为原创文章 项目主页 跪求star 程序员的浪漫,我女朋友蘑菇喜欢旅游,于是我做了这个,记录2015一起去过的地方,祝她圣诞快乐 如果觉得对你有帮助,github求个star 视频 ...