发请求(url)

1.client  ----------------》服务端

               发送数据(Json/xml)

                     < ---------------------------







1. XML格式



        常见: plist文件, 网易新闻, 新浪新闻



        XML文档



        标签/节点    <root></root>   最外层的root 称为根节点

        标签名        root

        

        <CityName>北京</CityName>

        标签值/节点值        北京        



        <Item key="1" value="报纸"> </Item>

         key="1" 属性节点

        属性: key="1"

        属性名:    key

        属性值:    "1"



    *xml数据(文档)自上而下的树形结构

    *<root>.....</root>(一个完整的节点),root节点的名称(标题) 中间的(....)为节点的内容

     *每一个xml文档仅仅有一个根节点(树形结构中最外层的节点)

     *xml文档(数据)由多个节点组成(根节点->子节点->子节点....)

     */

二叉树





JSON

JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于高速编写的特性。可在不同平台之间进行数据交换。JSON採用兼容性非常高的、全然独立于语言文本格式,同一时候也具备类似于C语言的习惯(包含C, C++, C#, Java, JavaScript, Perl, Python等)体系的行为。

这些特性使JSON成为理想的数据交换语言。

XML

扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言。能够用来标记数据、定义数据类型。是一种同意用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言。早已成为业界公认的标准



json(相对于xml的数据,轻巧,传输速率高,冗余的数据少。缺点:可读性差些)



xml(冗余的数据多,长处:可读性强,扩展性强)

/*xml 可扩展标记语言,主要用于client与服务端进行数据交互。

*xml数据特点:一种自上而下的树形结构,有且仅仅有一个根节点:<root>...</root>

     *解析xml数据的过程,就是获取节点内容的过程

     *xml 与json: xml数据可读性强、扩展性强,可是没有json格式的数据轻巧,冗余的数据较多

 */



NSJSONS…….

SBJson



1.系统  NSXMLParser  比較复杂

   

2.第三方开源库 GData  经常使用  或者 kissxml



    解析xml常常使用库:    GData

        底层使用系统的libxml2库, 使用的时候加入libxml2



        (1)导入GData库, 直接拖进来

        (2)设置头文件搜索路径  

            Build Setting--->header  search Path

            加入   /usr/include/libxml2



        (3)加入libxml二进制库

            Build Phases ---> Link Binary

            加入     libxml2.dylib



        (4)假设是arc的project

            Build Phases ---> Compile Source File

                GDataXmlNode.m(非arc的)



GData 第三方库 有两种方式解析

1.获取根节点全部元素   遍历全部的子节点



2.xpath语法

    



    2. XPath获取指定的节点

    @“http://10.0.8.8/sns/my/user_list.php?format=xml&page=1&number=10”  得到的时xml 格式的数据



//新浪新闻

http://rss.sina.com.cn/sina_all_opml.xml





掌握的函数





GDataXMLNode



获取当前节点的值

- (NSString *)stringValue;

//获取当前节点子节点的个数

- (NSUInteger)childCount;

//获取子节点数组

- (NSArray *)children;

//依据索引获取子节点

- (GDataXMLNode *)childAtIndex:(unsigned)index;



GDataXMLElement

//依据节点名字获取全部的节点名为name的节点数组

- (NSArray *)elementsForName:(NSString *)name;

//获取节点的属性

- (NSArray *)attributes;

//依据属性名获取属性节点

- (GDataXMLNode *)attributeForName:(NSString *)name;



GDataXMLDocument

//创建文档树

- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding error:(NSError **)error;

//获取跟节点

- (GDataXMLElement *)rootElement;



//依据xpath 语法 获取 指定的节点数组

- (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error;



扩展的函数 在GData 上添加的函数



//add by lzx 2014-05-28

//我们能够给这个开源库扩展 一些 没有的新方法

//那么以后仅仅要导入这个当前文件的源代码 那么就能够直接使用了



//获得当前节点的指定名称name(仅仅有一个叫name的子节点)的子节点的文本信息(值)

-(NSString *)stringValueByName:(NSString*)subName;

//获得当前节点的指定名称name(假设有多个同名子节点)的子节点的文本信息(值)

-(NSArray *)stringValuesByName:(NSString*)subName;

//获得当前节点的指定名称attrName属性的值

-(NSString*)attributeValueByName:(NSString*)attrName;

//获得当前节点指定名称全部子节点(数组中为要获得的全部子节点的名称)的值

-(NSDictionary *)subDictWithArray:(NSArray*)subNames;

json和XML的更多相关文章

  1. protocol buffers vs json vs XML

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com   在分布式系统中,数据序列化传递的情形非常常见,主流的三种,JSON.XML.Protobuf.   XML现在 ...

  2. .NET Core采用的全新配置系统[6]: 深入了解三种针对文件(JSON、XML与INI)的配置源

    物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...

  3. iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)

    <分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...

  4. staxon实现json和xml互转

    pom.xml: <dependency> <groupId>de.odysseus.staxon</groupId> <artifactId>stax ...

  5. JSON与XML的区别比较

    1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...

  6. PHP如何自动识别第三方Restful API的内容,自动渲染成 json、xml、html、serialize、csv、php等数据

    如题,PHP如何自动识别第三方Restful API的内容,自动渲染成 json.xml.html.serialize.csv.php等数据? 其实这也不难,因为Rest API也是基于http协议的 ...

  7. 【Yii2-CookBook】JSON 和 XML 输出

    Web 和移动应用程序现在不仅仅只是用来呈现 HTML. 现在开发一个移动客户端,利用服务器 api 驱动前端,所有的用户交互都在客户端哪里.JSON 和 XML 格式通常用于序列化和传输结构化数据通 ...

  8. JSON与XML优缺点对比分析

    本文从各个方面向大家对比展示了json和xml的优缺点,十分的全面细致,有需要的小伙伴可以参考下. 1. 定义介绍 1.1 XML定义 扩展标记语言 (Extensible Markup Langua ...

  9. php生成json或者xml数据

    , ,'数据返回成功',$arr);echo $xml;?>

  10. iOS-数据持久化基础-JSON与XML数据解析

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

随机推荐

  1. MySQL优化-存储引擎

    MySQL优化-存储引擎 标签(空格分隔): mysql 存储引擎 查看存储引擎 show engines Myisam: 表锁 全文索引 Innodb: 行锁 事物 外键 Memory: 内存存储引 ...

  2. POJ 3670 DP LIS?

    权值为1~3 好了 此题是水题-- i表示到了第i个数,j表示结尾的数是j f[i][j]=min(f[i][j],f[i-1][k]+(a[i]!=j)) 1<=k<=j 最长上升的. ...

  3. POJ 3661 DP

    题意: 思路: i表示到了i,j表示疲劳度为j f[i][j]表示能跑的最大距离 f[i][j]=f[i-1][j-1]+a[i] if(i-j>=0)f[i][0]=max(f[i][0],f ...

  4. mysql读写分离的解决方案

    来源于网上整理 http://yanwt.iteye.com/blog/1460780 现有三种解决方式实现mysql读写分离 1 程序修改mysql操作类 优点:直接和数据库通信,简单快捷的读写分离 ...

  5. 51Nod 1007 正整数分组(01背包)

    将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的. Input 第1行:一个数N,N为正整数的数量. ...

  6. C#线程安全打开/保存文件对话框

    在多线程单元模式(MTA)中为应用程序使用.NET OpenFileDialog和SaveFileDialog 下载FileDialogsThreadAppartmentSafe_v1.zip 如果您 ...

  7. 解决mongodb TypeError: Cannot read property 'XXX' of null 问题

    有时候我们的字段里的数据为空而去查询就会报错. 比如以下形式: “cartList”:[] “cartList”:[{}] “cartList”:{} “cartList”:null 在查询的时候加上 ...

  8. Python中的引用计数法

    目录 引用计数法 增量操作 计数器溢出的问题 减量操作 终结器 插入计数处理 引用计数法 增量操作 如果对象的引用数量增加,就在该对象的计数器上进行增量操作.在实际中它是由宏Py_INCREF() 执 ...

  9. 2014 CodingTrip - 携程编程大赛 (预赛第二场)

    1001: 食物链(poj1182),直接贴代码,稍作可过 并查集 // // main.cpp // 携程1 // // Created by zhang on 14-4-11. // Copyri ...

  10. Spring Cloud学习笔记【八】服务网关 Zuul(过滤器)

    在上篇文章中我们了解了 Spring Cloud Zuul 作为网关所具备的最基本功能:路由(Router),下面我们将关注 Spring Cloud Zuul 的另一核心功能:过滤器(Filter) ...