上研究生时对XML做了相当的学习研究,可惜后来并没有用到,工作后使用ExtJS才开始接触Json,发现Json也是一种不错的数据格式。Json与XML都是基于文本的格式,都可以用来传输和保存数据,不过个人以为,用来传输Json较好,如果做配置文件XML更胜一筹。

      XML的全称是Extensible Markup Language,即可扩展标记语言,它与HTML一样,是SGML(Standard Generalized Markup Language,标准通用标记语言)一种,非常易于阅读和编写。

      Json的全称是JavaScript Object Notation,是一种易于人阅读和编写,同时也易于机器解析与生成的轻量级数据交换格式。它是JavaScript的一个子集,由 文档 RFC4627 定义。

      虽然Json与XML都是基于文本易于阅读和编写的数据交换格式,但Json要简单的多。Json没有XML那么多的概念与规则,所以Json的解析与生成非常容易,编写一个Json库轻而易举(我自己就写了一个),如果要自己写一个XML库,问题就没有那么简单了。也正是XML没有Json那么简单,所以XML功能上要强大的多。

      比较起来,Json与XML的差异主要体现在以下几点:

  1. 注释 :XML可以在文档中加入注释,已增加可读性,但Json没有这方面的便利,RFC4627中根本就没有定义如何注释Json数据。
  2. 有效性验证 :XML可以使用DTD或Schema来保证其内容符合特定的逻辑规则,但Json没有这方面的便利。
  3. 查询支持 :可以使用XPath与XQuery查询XML数据内特定的部分,Json同样没有这方面的便利。
  4. 友好的展示数据 :借助XLT或CSS技术,可以像HTML一样展示XML数据,这点Json也做不到。

      从功能上讲,XML非常强大,这使得XML的解析变得非常复杂,库代码也异常庞大。解析XML要处理元素与属性,区分注释,验证有效性,XML库至少还要再增加上查询支持,所以XML库都异常庞大,编写起来非常困难。

      相对而言,Json不提供注释、有效性验证与查询支持,也不管数据的展示,功能上非常单薄,但这也使得解析Json非常容易,编写Json库也花费不了多少力气。

      由于Json简单,库代码体积也非常小,所以非常适合传输数据。而XML提供了注释功能与有效性验证以及查询技术,更适合作为配置文件的格式。