发请求(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. nyoj--12--喷水装置(二)(区间覆盖问题+贪心)

    喷水装置(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水 ...

  2. hdoj--5567--sequence1(水题)

    sequence1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  3. Kali linux2.0里Metasploit的服务类型探测

    不多说,直接上干货! 在MSF终端中,可以输入search name:_version命令查看所有可用的服务查点模块 该命令的执行结果如下: root@kali:~# msfconsole ..... ...

  4. JSONObject与JSONArray的使用区别

    1.JSON 1. 创建一个JSONObject对象: package com.yunos.tv.video.resource.controller.web; import java.util.Arr ...

  5. [洛谷P2045]方格取数加强版

    题目大意:有一个n*n的矩阵,每个格子有一个非负整数,规定一个人从(1,1)开始,只能往右或下走,走到(n,n)为止,并把沿途的数取走,取走后数变为0.这个人共取n次,求取得的数的最大总和. 解题思路 ...

  6. 人在IT,关于计算机专业的杂谈PPT

  7. 我的CSDN原创高质量免积分下载资源列表(持续更新)

    最近几个月,我在CSDN平台,发表了大量原创高质量的项目,并给出了相应的源码.文档等相关资源. 为了方便CSDN用户或潜在需求者,下载到自己想要的资源,特分类整理出来,欢迎大家下载. 我的原则:原创高 ...

  8. 全面解读Java中的枚举类型enum的使用

    这篇文章主要介绍了Java中的枚举类型enum的使用,开始之前先讲解了枚举的用处,然后还举了枚举在操作数据库时的实例,需要的朋友可以参考下 关于枚举 大多数地方写的枚举都是给一个枚举然后例子就开始sw ...

  9. gpdb删除segment上残余的session和sql

    转载请注明出处:gpdb删除segment上残余的session和sql 最近公司的gpdb的变卡,导致线上系统查询队列阻塞,用户一点数据都查不出来. 每天早上我和同事都得用我们自家做的gpdb运维平 ...

  10. 【JavaScript】JavaScript中的replaceAll

    JavaScript中是没有replaceAll的.仅仅有replace,replace仅仅能替换字符中的第一个字符.并且这个replace里面不支持正則表達式,以达到replaceAll的目的. 只 ...