一、 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. Windows Server 2012 (2008) 忘记密码重置方法 Windows 10 忘记密码

    要使用windows server 2012安装DVD,选择光盘引导进入 进入修复系统---命令提示符---切换目录至系统目录--执行move命令    先备份  utilman.exe(他就是这个程 ...

  2. ubuntu12.04 安装配置jdk1.7

    第一步:下载jdk-7-linux-i586.tar.gz wget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586 ...

  3. hive数据库的一些应用

    1.创建表格create table usr_info(mob string,reason string,tag string) row format delimited fields termina ...

  4. 《javascript高级程序设计》第七章 递归recursion

    7.1 递归7.2 闭包 7.2.1 闭包与变量 7.2.2 关于this 对象 7.2.3 内存泄漏 7.3 模仿块级作用域7.4 私有变量 7.4.1 静态私有变量 7.4.2 模块模式 7.4. ...

  5. hdu 3074 Zjnu Stadium (带权并查集)

    Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  6. <spring:message> 标签

    可以使用<spring:message>标签结合 ResourceBundleMessageSource 的功能,在网页上显示 messages.properties 中的文字讯息,例如在 ...

  7. Javascript之对象的继承

    继承是面向对象语言一个非常重要的部分.许多OOP语言都支持接口继承和实现继承两种方式.接口继承:继承方法签名:实现继承:继承实际的方法.在ECMAScript中函数是没有签名的,所以也就无法实现接口继 ...

  8. Objective-C:Foundation框架-结构体

    在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发. ...

  9. 转载css层级优先级。

    解读CSS样式优先级(修改门户自定义样式必读) 一.什么是CSS优先级?所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序.当同一个元素(或内容)被多个CSS选择符选中时,就要按照优先权取舍 ...

  10. JavaScript 事件委托的技术原理

    如今的 JavaScript 技术界里最火热的一项技术应该是‘事件委托(event delegation)’了.使用事件委托技术能让你避免对特定的每个节点添加事件监听器:相反,事件监听器是被添加到它们 ...