一、 XML:用到一个开源解析类,GDataXMLNode(将其加入项目中),添加libxml2.dylib框架

经常用到的方法:

1.- (id)initWithXMLString:(NSString *)str options:(unsigned int)mask error:(NSError *)error

2.- (id)initWithData:(NSData *)data options:(unsigned int)mask error:(NSError *)error

这两个方法可以将NSString类型或者NSData类的数据转化为GDataXMLNode类可以解析的XML文档

3.- (GDataXMLElement *)rootElement 返回GDataXMLElement中所有节点信息

4.- (NSArray *)elementsForName:(NSString *)name   返回当前节点下名称为name的所有节点,返回值为数组。

5.- (NSString *)stringValue 返回节点中间的值。

二、 JSON:用到开源的框架SBJSON,对NSString类的扩展,我们程序中的所有NSString对象都可以调用其中的方法。

SBJSON的方法- (id)JSONValue 此方法返回一个ID类对象,因为JSON信息都是以键值来传输的,所以我们会用NSDictionary来接收这个返回值。

两种结构:

1.“键值对”的集合。对象(object),记录(Record),结构(struct),字典(dictionary),哈希表(hashtable),键列表(keyed list),关联数组(associative array)。

2.值的有序列表。数组(Array)。

JSON解析
1大括号代表字典
2中括号(小括号)代表数组
3冒号的左右两边分别为键和值(key:value)
4数据和数据之间用逗号隔开

我们在本机上创建一个file.xml,进行解析,并取出年龄35

//JSON解析
   本地读取student.xml文件
    NSString *jstr=[NSString stringWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"File" ofType:@"json"] encoding:NSUTF8StringEncoding error:nil];//取到路径
    //进行解析,因为最外面是字典,所以要用字典类型的对象来接
    NSDictionary *dic=[jstr JSONFragmentValue];
    //下面取值
    //取到hello这个key,取到的是数组里的内容所以要用数组来接
    NSArray *arr=[dic objectForKey:@"hello"];
    //取到下标为1的数组,因为数组里面又是一个字典,所以用字典来接
    NSDictionary *dic2=[arr objectAtIndex:1];
   //取到字典key为age的value,因为取出来的值是字符串,用字符串来接
    NSString *jage=[dic2 objectForKey:@"age"];
    //输出取出的age
    NSLog(@"%@",jage);
//XML解析
同样我们也在本地创建一个File.xml的文件里面包含:
<students>
    <student>
        <name>kellen</name>
        <age>25</age>
        <sex>M</sex>
    </student>
    <student>
        <name>jack</name>
        <age>35</age>
        <sex>M</sex>
    </student>
</students>

//step1:本地读取student.xml文件
    //获取目录的xml文件
    NSString*xmlPath=[[NSBundle mainBundle]pathForResource:@"File" ofType:@"xml"];
    NSData*xmlData=[[NSData alloc]initWithContentsOfFile:xmlPath];
    //step2:将包含xml内容的字符串转化为document对象
   
    GDataXMLDocument*xmldoc=[[GDataXMLDocument alloc]initWithData:xmlData options:0 error:nil];
   
    //step3:获取到根节点
    //获取根节点(students)
    GDataXMLElement*rootElement=[xmldoc rootElement];
   
    //step4:遍历节点信息
    //获取根节点下的节点(student)
    NSArray*students=[rootElement elementsForName:@"student"];
    NSLog(@"%@",students);
    //使用forin遍历XML中的所有数据
    for (GDataXMLElement*stu in students) {
        //获取name节点的属性
        GDataXMLElement*nameElement=[[stu elementsForName:@"name"]objectAtIndex:0];
        NSString*name=[nameElement stringValue];//获取nameElement
        NSLog(@"Student name is:%@",name);
        //获取age节点的属性
        GDataXMLElement*ageElement=[[stu elementsForName:@"age"]objectAtIndex:0];
        NSString*age=[ageElement stringValue];
        NSLog(@"User age is :%@",age);
    }
}

JSON解析和XML解析的更多相关文章

  1. JSON解析和XML解析对比

    JSON解析和XML解析是较为普遍的两种解析方式,其中JSON解析的市场分额更大.本文系统的分析两种解析方式的区别,为更好地处理数据作准备.由于目前阶段主要是做移动开发,所以本文所描述的JSON解析和 ...

  2. QF——网络之JSON解析和XML解析

    JSON解析和XML解析: 用苹果原生的代理方式的网络请求后返回的都是二进制数据(NSData). 若是json,则通过NSJSONSerialization把NSData数据转换为JSON对象. N ...

  3. Cocos2d-x 3.0 Json用法 Cocos2d-x xml解析

    Cocos2d-x 3.0 加入了rapidjson库用于json解析.位于external/json下. rapidjson 项目地址:http://code.google.com/p/rapidj ...

  4. java中json解析,xml解析

    抓取网页内容,会返回json或者xml(html)格式的数据. 为了方便的对上述两种格式的数据进行解析,可采用解析工具. JsonPath https://github.com/jayway/Json ...

  5. UI进阶 解析XML 解析JSON

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

  6. 数据解析之XML和JSON

    1. 解析的基本的概念 解析:从事先规定好的格式中提取数据 解析前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JOSN解析 2. X ...

  7. 【.Net 】Json和Xml解析

    引言    Json和Xml是现在跨平台传输数据的主流格式,关于它们的解析,网上资料很多,我稍作整理,写成一个小demo,方便日后使用. JSON解析     能进行json解析的类库有很多,例如Ja ...

  8. 网络数据的XML解析

    网络应用中的数据解析,因为最近的应用,无论是Android的和ios平台的,一直用也是建议用的都是Json解析, xml解析都有点被遗忘了. 然后最近自己在做着玩一个ios的小应用,涉及网络数据的抓取 ...

  9. XML解析之DOM详解及与SAX解析方法的比较

    XML解析(DOM) XML文件解析方法介绍 我们所用到的NSXMLParser是采用SAX方法解析 SAX(Simple API for XML) 只能读,不能修改,只能顺序访问,适合解析大型XML ...

随机推荐

  1. Vcenter 添加域管理员权限

    授予相应管理权限

  2. Windows定时器

    目录 第1章定时器    1 1.1 创建定时器    1 1.2 销毁定时器    1 1.3 定时器的运作    1 1.3.1 产生WM_TIMER消息    1 1.3.2 分发WM_TIME ...

  3. 【OpenCV入门指南】第一篇 安装OpenCV

    http://blog.csdn.net/morewindows/article/details/8225783/ win10下vs2015配置Opencv3.1.0过程详解(转) http://ww ...

  4. Jquery如何获得<iframe>嵌套页面中的元素

    DOM方法:父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.documentjq ...

  5. md5算法原理一窥(其一)

    首先,需要了解的事,md5并不是传说中的加密算法,只是一种散列算法.其加密的算法并不是我们说所的那样固定不变,只是一种映射的关系. 所以解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD ...

  6. Struts2动态结果(${})and全局结果(global-results)

    动态结果 例:根据判定动态结果区分用户进行登录 1.先在TestAction类中进行判定赋值 public class TestAction extends ActionSupport { priva ...

  7. 使用Yeoman,Grunt和Bower开发AngularJS(译)

    使用Yeoman产生AngularJS的主要骨架 使用Grunt加速开发和帮助执行 使用Bower来加入第三方插件和框架——third party plugins/frameworks 一.准备工作 ...

  8. C# + winserver2008 openfiledialog 写入 textbox1 中的 路径不正确

    System.IO.Path.GetFullPath(openFileDialog1.FileName);//绝对路径 System.IO.Path.GetExtension(openFileDial ...

  9. 将windows下的PLSQL转移到Ubuntu上

    1,首先下载安装wine,安装不成功的更新下源即可. 2,Ctal+Alt+T 打开控制台: cd ~/.wine/drive_c mkdir -p oracle/bin mkdir -p oracl ...

  10. 如何删除href=""中的链接?

    答案:在dw中操作,删除 HTML文件的href的链接地址\href="[^"]*"href="" 同理可以在title="[^" ...