一、 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. iconv 文件编码相互转换

    iconv 文件编码相互转换 示例: iconv -f utf-8 -t gbk ~/a.txt > ~/b.txt -f 从哪种格式转换 -t 要转换到哪种格式 a.txt要转换的文件 b.t ...

  2. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio »迁移

    Migrations¶ 4 of 4 people found this helpful The Contoso University sample web application demonstra ...

  3. Mybatis学习(贰)

    一.类型别名typeAlias 1.在mapper文件中:实体作为resultType,多次书写在配置文件中,每次需要书写权限名(com.baizhi.yanxj.entity.User),代码比较繁 ...

  4. kellogg项目总结

    1.题目的去随机值去重 (当时做的是每次点击取出一个随机数,并删除数组中位置,后来改成获取10个随机数组成的数组,二者略有差距,修改颇长时间) function getArr(num){ totalA ...

  5. nodeschool.io 2

    ~~  BABY STEPS  ~~ Write a program that accepts one or more numbers as command-line arguments and pr ...

  6. uva514(trail)(模拟栈)

    //#define LOCAL #include<cstdio> #include<cstring> #include<cstdlib> #include<s ...

  7. uva------Help is needed for Dexter(11384)

    Problem H Help is needed for Dexter Time Limit: 3 Second Dexter is tired of Dee Dee. So he decided t ...

  8. python中函数使用

    1.关于函数的调用,简单小例子: >>> def fun():  print(test) >>> test='ni hao ma ?'>>> fu ...

  9. 5月21日 CSS样式表加阴影

    HTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  10. 各式各样table

    <html> <head>      <title>大清帝国</title>      <meta name="keywords&quo ...