首页 > 代码库 > XML与JSON

XML与JSON

一.XML

  扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
  XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。被设计用来传输和存储数据

  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签
  • XML 被设计为具有自我描述性

 

  语法:

  1.XML 文档必须有根元素

 

    XML 必须包含根元素,它是所有其他元素的父元素,比如以下实例中 root 就是根元素:

 

    <root> <child> <subchild>.....</subchild> </child> </root>
 

  2.XML 声明

    XML 声明文件的可选部分,如果存在需要放在文档的第一行,如下所示:

    <?xml version="1.0" encoding="utf-8"?>

  3.所有的 XML 元素都必须有一个关闭标签

     4.XML 标签对大小写敏感

   5.XML 必须正确嵌套

    在 HTML 中,常会看到没有正确嵌套的元素:

    <b><i>This text is bold and italic</b></i>

  6.XML属性值必须加引号

二.JSON定义
  JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

  JSON 语法规则

  在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:
  • 对象表示为键值对
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

  JSON 键/值对

    JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值:
1
{"firstName": "John"}

  JSON 与 JS 对象的关系

    JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
 
1
var obj = {a: ‘Hello‘, b: ‘World‘}; //这是一个对象,注意键名也是可以使用引号包裹的

  JSON 和 JS 对象互转

    要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:
1
var json = JSON.stringify({a: ‘Hello‘, b: ‘World‘}); //结果是 ‘{"a": "Hello", "b": "World"}‘
    要实现从 JSON 转换为对象,使用 JSON.parse() 方法:
1
var obj = JSON.parse(‘{"a": "Hello", "b": "World"}‘); //结果是 {a: ‘Hello‘, b: ‘World‘}
 
 
 

三.XML和JSON优缺点

  (1).XML的优缺点
    <1>.XML的优点
      A.格式统一,符合标准;
      B.容易与其他系统进行远程交互,数据共享比较方便。
    <2>.XML的缺点
      A.XML文件庞大,文件格式复杂,传输占带宽;
      B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
      C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
      D.服务器端和客户端解析XML花费较多的资源和时间。

   (2).JSON的优缺点
    <1>.JSON的优点:
      A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
      B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;
      C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;
      D.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
    <2>.JSON的缺点
      A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;
      B.JSON格式目前在Web Service中推广还属于初级阶段。

 

  (1).可读性方面。
    JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,XML可读性较好些。
  (2).可扩展性方面。
    XML天生有很好的扩展性,JSON当然也有,JSON的扩展性比XML好。
  (3).编码难度方面。
    XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。
  (4).解码难度方面。
    XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。
  (5).流行度方面。
    XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。
  (6).解析手段方面。
    JSON和XML同样拥有丰富的解析手段。
  (7).数据体积方面。
    JSON相对于XML来讲,数据的体积小,传递的速度更快些。
  (8).数据交互方面。
    JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。
  (9).数据描述方面。
    JSON对数据的描述性比XML较差。
  (10).传输速度方面。
    JSON的速度要远远快于XML。

四.XML和JSON实例
 
<1>.用XML表示中国部分省市数据如下:
<?xml version="1.0" encoding="utf-8" ?>
<country>
  <name>中国</name>
  <province>
    <name>黑龙江</name>
    <citys>
      <city>哈尔滨</city>
      <city>大庆</city>
    </citys>    
  </province>
  <province>
    <name>广东</name>
    <citys>
      <city>广州</city>
      <city>深圳</city>
      <city>珠海</city>
    </citys>   
  </province>
  <province>
    <name>台湾</name>
    <citys>
       <city>台北</city>
       <city>高雄</city>
    </citys> 
  </province>
  <province>
    <name>新疆</name>
    <citys>
      <city>乌鲁木齐</city>
    </citys>
  </province>
</country>
 

<2>.用JSON表示中国部分省市数据如下:

 var country =
        {
            name: "中国",
            provinces: [
            { name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} },
            { name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },
            { name: "台湾", citys: { city: ["台北", "高雄"]} },
            { name: "新疆", citys: { city: ["乌鲁木齐"]} }
            ]
        }
 
     编码的可读性来说,XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。JSON读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过JSON的索引country.provinces[0].name就能够读取“黑龙江”这个值。
     编码的手写难度来说,XML还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而XML却包含很多重复的标记字符。
 

 

XML与JSON