发请求(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;

最新文章

  1. ES6(二)解构赋值详解
  2. JAVA多线程(二)
  3. There is no getter for property named &#39;NULL&#39; in ……
  4. Dev GridControl导出
  5. vim多行注释和取消多行注释
  6. Thread Pool Engine, and Work-Stealing scheduling algorithm
  7. 记redis的一个测试
  8. Android硬件抽象层(HAL)概要介绍和学习计划
  9. WPF中XAML中使用String.Format格式化字符串示例
  10. 张高兴的 Windows 10 IoT 开发笔记:使用 ADS1115 读取模拟信号
  11. Delphi中Chrome Chromium、Cef3学习笔记(二)
  12. C#定义只能处理枚举类型的泛型类型
  13. spring boot(十五)spring boot+thymeleaf+jpa增删改查示例
  14. Linux C++ - IP地址转换函数
  15. Day 30 面向对象的考试题
  16. 【模板】ISAP最大流
  17. Ubuntu下使用virtualenv
  18. go语言基础之工程管理和工作区介绍
  19. Tomcat下配置多个Project的虚拟主机
  20. IO 概括

热门文章

  1. BZOJ 3680 模拟退火
  2. Spring MVC登录注册以及转换json数据
  3. HDU 4324 Triangle LOVE【拓扑排序】
  4. GoldenGate 反向切换步骤
  5. js实现观察者模式风格替换
  6. [USACO16FEB]围栏Fenced In Platinum
  7. [NOIP2013提高组]货车运输
  8. jquery中$.get()提交和$.post()提交有区别
  9. ECNUOJ 2855 贪吃蛇
  10. ArcGIS api for javascript——用缓存区查询地图