发请求(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. 46. AngularJS所有版本下载

    转自:https://www.cnblogs.com/best/tag/Angular/ 官网下载:https://angularjs.org/ AngularJS所有版本下载:https://cod ...

  2. struts2入门(搭建环境、配置、示例)

    转自:https://blog.csdn.net/u012862311/article/details/53412716 1.下载Struts2的jar包 下载地址:http://archive.ap ...

  3. 6.CPU调度

    总论:所有的程序都是CPU和I/O等待交替执行 CPU调度器的操作时机 调用CPU调度器的时机,通常发生在 某一进程从执行状态转化为等待状态 某一进程从执行状态转化为就绪状态 某一进程从等待状态转为就 ...

  4. js中 '枚举' 的使用

    习惯了.net编程,c#的枚举很好用,无论管理上,可读上,易用上都非常强大. JS作为弱类型解析语言,并没有严格的数据类型限定. “枚举”在JS中并不存在的. 通过定义上,枚举是一种类常量的存在,只不 ...

  5. 利用js与java交互

    为了方便网页和应用的交互,安卓系统WebView提供JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法即可映射一个Java对象到JavaSc ...

  6. Windows下使用VS的ADO访问MySQL

    数据库的访问的一种方式就是:CS结构.即使用TCP/UDP协议进行远程访问,而数据库对于服务端的软件是本地访问!这种管理方式比较常见. 这里主要叙述Windows访问本地数据库的方法. 需要了解几个概 ...

  7. dist文件夹、src文件夹、dest文件夹是什么意思?

    dist文件夹是编译后或者压缩后的代码,终发布版本的代码 src文件夹是源码文件 dest文件夹为压缩包文件夹

  8. [POI2009]KON-Ticket Inspector(二维前缀和+DP)

    题意 有n个车站,现在有一辆火车从1到n驶过,给出aij代表从i站上车j站下车的人的个数.列车行驶过程中你有K次检票机会,所有当前在车上的人会被检票,问最多能检多少个不同的人的票 (n<=600 ...

  9. 今日SGU 6.6

    sgu 177 题意:给你一个一开始全是白色的正方形,边长为n,然后问你经过几次染色之后,最后的矩形里面 还剩多少个白色的块 收获:矩形切割,我们可以这么做,离散处理,对于每次染黑的操作,看看后面有没 ...

  10. HDU 3911 线段树区间合并

    北京赛区快了,准备袭击数据结构和图论.倒计时 18天,线段树区间合并.维护一个最长连续.. 题意:给一个01串,以下有一些操作,问区间最长的连续的1的个数 思路:非常裸的线段树区间合并 #includ ...