好久没写文章了,回忆一下以前的内容记录一下吧。

这一段主要接触的就是数据解析,就说一下数据解析
现在数据解析一般解析两种数据 xml 和 JSON
那就从xml解析说起吧
xml解析需要用到一个类 NSXMLParser  以及一个协议 NSXMLParserDelegate
首先NSXMLParser是一个 xml 解析器

要解析数据首先创建一个xml解析器

NSXMLParser  *XMLParser = [[NSXMLParser alloc]initWithData:data];

其中data就是我们要解析的数据

然后执行解析就行  [XMLParser parse];
 执行解析时就会回调以下协议中的几个方法
 
 #pragma mark NSXMLParserdelegate---
//开始解析文档
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
//文档开始解析的时候调用,在这里可以初始化一些东西
}

//解析文档结束
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
//文档解析完成时调用,这里可以写解析完成后的操作
}

//标签解析开始
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{    
//标签开始解析,其中elementName就是开始标签的名称
}

//标签解析结束
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
//标签开始解析,其中elementName就是结束标签的名称,
//在这里你可以做一些逻辑判断,看这个标签里的东西是不是自己需要的,然后进行操作
}

//解析出来的标签值
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
// string 这个就是当前解析标签的值,
}

其实还有一种xml解析的方法,就是dom解析,它是把XML看成树型结构,先找到根节点,
然后利用循环嵌套,遍历根节点的子节点,遍历子节点的子节点,一直遍历到叶子节点,当然叶子节点
是最后一层了,里面就是我们要得数据。
这种方法我感觉不好用,太麻烦,循环嵌套太多。所以不推荐使用
而且需要导入libxml2.dylib这个类库,最后还得修改路径  /usr/include/libxml2 
但是在这里我还是把这个第三方类给出来吧
http://pan.baidu.com/s/1sjtXAUh

好接下来就是我们的JSON解析了。
我感觉JSON解析的解析过程不重要,重要的是JSON解析之后对结果的处理
JSON解析后是个dictionary,但是字典中有可能包含字典和数组,数组中还可以包含字典。
新浪微博的请求微博返回的数据经过JSON解析结果就是这样的。
下面就简单介绍一下JSON解析过程
其实就一句话

data就是解析数据
//IOS5自带解析类NSJSONSerialization从data中解析出数据放到字典中
    NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:Data options:NSJSONReadingMutableLeaves error:&error];
  
 //TouchJSON
//将解析得到的内容存放字典中
 NSDictionary *pRootDic = [[CJSONDeserializer deserializer]deserialize:data error:&error];
//这里的解析对象是NSData类型
  
//SBJSON    
  // 获取一个解析器对象 
    SBJsonParser *parser = [[[SBJsonParser alloc] init]autorelease];
    //获取json串解析后返回的字典
    NSDictionary *rootDic = [parser objectWithString:String error:&error];
//需要注意的是要先把解析的数据给解码为NSString类型然后才可以解析
    
 //JSONKit
 //获取解析后的字典(完成解析,返回值为字典类型)
  NSDictionary *pWeatherDic = [jsonStr objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];//统一编码标准
//注意 jsonStr还是把数据先解码为NSString型,之后jsonStr直接用解析方法就行了

//这里附带一个把data转化为NSString类型的方法
  NSString *string = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
  
  下面附上TouchJSON,SBJSON 和 JSONKit的第三方类的链接
  http://pan.baidu.com/s/1bnpGwxD

好了今天就到这里,把最近学的知识分享给大家,如有错误欢迎指正 —— LC

IOS 请求数据解析 XML 和 JSON的更多相关文章

  1. boost-使用property_tree来解析xml、json

    property_tree是一个保存了多个属性值的树形数据结构,可以用来解析xml.json.ini.info文件.要使用property_tree和xml解析组件的话需要包含"boost/ ...

  2. Python解析xml与JSON

    xml与json是常用的文件交换格式,常用来表示网页的html则是xml的变种.解析xml和json在web开发中有着重要应用. DOM解析XML 文件对象模型(Document Object Mod ...

  3. .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)

    .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml) 首先设置 Startup.cs 文件 配置 ConfigureServices services .Add ...

  4. iOS高级编程之XML,JSON数据解析

    解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...

  5. ios解析XML和json数据

    解析的基本概念所谓“解析”:从事先规定好的格式串中提取数据解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据iOS开发常见的解析:XML解析.JSON解析 一.XML数 ...

  6. iOS开发之解析XML格式数据

    XML格式的数据是一种数据的传输格式.因为它方便编写.结构清晰,所以深受程序猿的喜爱,非常多人都喜欢使用XML格式数据传输或者作为程序的配置信息. 如今我将来实如今iOS中解析XML格式数据,语言使用 ...

  7. iOS UI13_数据解析XML_,JSON

    - (IBAction)parserButton:(id)sender { parserXML *parser =[[parserXML alloc] init]; [parser startPars ...

  8. UI:数据的解析XML与JSON

    XML  和  JSON 语言  本篇博客来自互联网参考 XML 和 JSON 的互相转化 有属性的转化为对象,无属性的转化为字符串 节点的顺序性不可逆,XML有顺序,JSON 无顺序 XML 和 J ...

  9. 浅议iOS网络数据解析

    /*------------------------------------ 数据解析: 1.JSON数据 --------------------------------*/ 重点:1.什么是JSO ...

随机推荐

  1. 根据请求号(request ID)查找正在运行的sql

    --下面的SQL可以根据Request ID找到对应的Session信息: select * from v$session where paddr in (select addr from v$pro ...

  2. 修改Unity中Lua文件的默认打开程序

    项目中引用了XLua,而Lua文件又是以txt文件结尾的,当修改系统的扩展脚本编辑器为vs后双击lua文件(xx.txt)默认也使用vs打开了,无提示的黑白文本编辑 昨办? -. 后来看到网上有写Un ...

  3. 用PHP纯手工打造会动的多帧GIF图片验证码

    效果演示: http://pcik.7di.net/pcik_reg 百度的效果演示: https://passport.baidu.com/cgi-bin/genimage?captchaservi ...

  4. asp.net 用JWT来实现token以此取代Session

    先说一下为什么要写这一篇博客吧,其实个人有关asp.net 会话管理的了解也就一般,这里写出来主要是请大家帮我分析分析这个思路是否正确.我以前有些有关Session的也整理如下: 你的项目真的需要Se ...

  5. python3简单使用requests 用户代理,cookie池

    官方文档:http://docs.python-requests.org/en/master/ 参考文档:http://www.cnblogs.com/zhaof/p/6915127.html#und ...

  6. wifipineapple执行dnsspoof

    ssh连接到wifipineapple: 输入连接信息:ssh root@172.16.42.1 输入密码:pineapplesareyummy 安装依赖基本环境: opkg update opkg ...

  7. MSSQL存储过程

    存储过程的种类:       1.系统存储过程.        以sp_开头      2.扩展存储过程.        以xp_开头      3.用户定义存储过程. --重新编译存储过程 exec ...

  8. MySql之插入操作

    一:插入一行数据 INSERT INTO tableName(列名...) VALUES(对应列名的值); 二:插入多行 INSERT INTO tableName(列名...) VALUES(对应列 ...

  9. 将csv的数据导入mysql

    手头有一份8MB的CSV文件需要分析,对于程序员来说,还有比在数据库里分析更愉快的事情吗? 所以让我们把CSV导入MYSQL吧. 一.首先按照文件列数创建相应的SQL表 例如: DROP TABLE ...

  10. logback配置详解

    本文转自:https://segmentfault.com/a/1190000008315137 概览 简单地说,Logback 是一个 Java 领域的日志框架.它被认为是 Log4J 的继承人.L ...