一、 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. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 增、查、改、删操作

    Create, Read, Update, and Delete operations¶ 5 of 5 people found this helpful By Tom Dykstra The Con ...

  2. Xml反序列化

    XML的反序列化可在类的属性上标记特性来隐射反序列化.例如这种形式 public class PaymentAccount { [XmlAttribute("name")] pub ...

  3. 三张图彻底了解Java中字符串的不变性

    转载: 三张图彻底了解Java中字符串的不变性 定义一个字符串 String s = "abcd"; s中保存了string对象的引用.下面的箭头可以理解为"存储他的引用 ...

  4. Android虚拟机常见错误及解决办法

    第一个: [2012-11-09 13:15:14 - Tesa] Android Launch! [2012-11-09 13:15:14 - Tesa] The connection to adb ...

  5. 使用委托(C# 编程指南)

    原文地址:https://msdn.microsoft.com/zh-cn/library/ms173172.aspx 委托是安全封装方法的类型,类似于 C 和 C++ 中的函数指针.  与 C 函数 ...

  6. JAVA智能设备基于OpenGL的3D开发技术 之AABB碰撞检测算法论述

    摘要:无论是PC机的3D还是智能设备应用上,碰撞检测始终是程序开发的难点,甚至可以用碰撞检测作为衡量3D引擎是否完善的标准.现有许多3D碰撞检测算法,其中AABB碰撞检测是一种卓有成效而又经典的检测算 ...

  7. php Composer 报ssl证书错误

    CA证书下载地址:http://curl.haxx.se/docs/caextract.html 修改php.ini文件 openssl.cafile= D:/wamp/php/verify/cace ...

  8. Leetcode--Add two number

    地址:https://leetcode.com/problems/add-two-numbers/ 代码: class Solution { public: ListNode* addTwoNumbe ...

  9. php使用位与运算符【&】位或运算符【|】实现权限管理

    权限值是这样的2^0=1,相应2进数为”0001″(在这里^我表示成”次方”,即:2的0次方,下同)2^1=2,相应2进数为”0010″2^2=4,相应2进数为”0100″2^3=8,相应2进数为”1 ...

  10. cf------(round 2)A. Winner

    A. Winner time limit per test 1 second memory limit per test 64 megabytes input standard input outpu ...