发请求(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. CSS提高渲染速度的写法

    写CSS的习惯,决定页面渲染速度的快慢,这一点在脑残的IE里更加明显.养成良好的习惯,乃至形成规范,会让你的页面更快速的加载,用户体验度更高,下面是零度逍遥总结的一些提高CSS渲染速度的写法,供大家参 ...

  2. 使用sshfs来挂载远程的文件

    只要安装sshfs就可以通过ssh的端口来远程挂载文件夹, 不需要其他额外的配置非常的方便. 这个软件在只有ssh权限的情况下远程范围文件是非常有用的.   1. 安装sshfs 2. 用法非常简单 ...

  3. 一键解决 500、502和504 Internal Privoxy Error 问题(图文详解)

    最近获得一个SS帐号,手机,其他电脑都能上,但是在我的电脑上就是500 或 502  或 504,如下所示. 502 Read from server failed: Unknown error Th ...

  4. T_SQL 日期函数

    日期函数基数表达式的日期和时间或者是从时间间隔中返回值. GETDATE(),返回当前系统的日期和时间.例: SELECT GETDATE();  结果为:2010-05-18 15:53:08.92 ...

  5. 51Nod 活动安排问题(排序+优先队列)

    有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室? Input 第一行一个正整数n (n <= 10000)代表活动的 ...

  6. Mac系统下安装pip

    Mac下 pip的安装 编译 Python3.7 终端输入: curl https://bootstrap.pypa.io/get-pip.py | python3 1 安装完成,检查版本信息 pip ...

  7. Android SDK Manager代理设置

    1.SDK Manager中打开 Tools—>Manage Add-on Sites…—>User Defined Sites 2.New …输入: http://android-mir ...

  8. Python 调用snmp自定义OID实现监控

    http://kkkkkk.blog.51cto.com/468162/1172726 http://blog.csdn.net/mirahs/article/details/49619729

  9. 深入理解Struts2

    简单介绍 Struts 2是Struts的下一代产品.是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架. 其全新的Struts 2的体系结构与Struts 1的 ...

  10. 思科E3200 路由器 DD-WRT 设置花生壳和3322.org动态域名(DDNS)

    花生壳设置(已測试) ddns.oray.com:80 username   aaaa password bbbb 主机名   abc.gicp.net URL       /ph/update?ho ...