Skip to main content

JSON VS XML VS HTML

一、JSON 和 XML 的定义

  • XML

可扩展标记语言(英语:Extensible Markup Language,简称:XML),用来传输及存储数据信息,不用来表现或展示数据。使用 DTD(document type definition)文档类型定义来组织数据,格式统一,跨平台和语言,非常适合 Web 传输。

  • JSON

JSON 是一种轻量级的数据交换格式(非编程语言),具有良好的可读和便于快速编写的特性。JSON 是一个 JavaScript 的严格子集,利用 JavaScript 中一些模式来表示结构化数据。

二、优缺点汇总

1、XML 的优缺点

优点:

  • 格式统一,符合标准。
  • 容易与其他系统进行远程交互,数据共享比较方便。

缺点:

  • XML 文件庞大,文件格式复杂,传输占带宽。
  • 服务器端和客户端都需要花费大量代码来解析 XML,导致服务器端和客户端代码变得异常复杂且不易维护。
  • 客户端不同浏览器之间解析 XML 的方式不一致,需要重复编写很多代码。
  • 服务器端和客户端解析 XML 花费较多的资源和时间。

2、JSON 的优缺点

优点:

  • 数据格式比较简单,易于读写,格式都是压缩的,占用带宽小。
  • 易于解析,客户端 JavaScript 可以简单的通过 eval() 进行 JSON 数据的读取。
  • 支持多种语言,包括 ActionScript、C、C#、ColdFusion、Java、JavaScript、Perl、PHP、Python、Ruby 等服务器端语言,便于服务器端的解析。
  • 在 PHP 世界,已经有 PHP-JSON 和 JSON-PHP 出现了,偏于 PHP 序列化后的程序直接调用,PHP 服务器端的对象、数组等能直接生成 JSON 格式,便于客户端的访问提取。
  • JSON 格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。

缺点:

  • 没有 XML 通用。
  • 数据描述性不如 XML。

三、优缺点对比

1、XML 与 JSON

对比范畴比较结果
可读性方面XML 可读性较好
数据描述方面XML 对数据的描述性更好
数据体积方面JSON 数据的体积小
传输速度方面JSON 传输速度要远远快于 XML
数据交互方面JSON 与 JavaScript 的交互更方便
编码难度方面JSON 的编码比 XML 容易
解码难度方面JSON 的解析难度更低(XML 的解析得考虑子节点父节点)

XML 需要使用 XML 解析器来解析,JSON 可以使用标准的 JavaScript 函数来解析。

  • JSON.parse(): 将一个 JSON 字符串转换为 JavaScript 对象。
  • JSON.stringify(): 于将 JavaScript 值转换为 JSON 字符串。

2、XML 与 HTML

  • HTML 用来显示数据,XML 用来存储和传输数据。
  • HTML 一些标签可以不成对出现,XML 标签必须成对出现。
  • HTML 中空格会被删减,XML 中空格不会被删减。
  • HTML 特殊符号可以直接使用,XML 中的特殊符号必须用编码表示。

四、实例对比

  • XML 文档必须包含根元素,该元素是所有其他元素的父元素。
  • XML 文档的元素形成了一颗文档树,这棵树从根部开始并扩展到树的底端。
  • 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>
</country>
  • JSON 更像一个数据块,通过索引 country.provinces[1].name 来读取“广东”这个值,适合机器阅读。
var country =
{
name: "中国",
provinces: [
{
name: "福建",
citys: {
city: ["福州", "厦门"]
}
},
{
name: "广东",
citys: {
city: ["广州", "珠海", "汕头"]
}
}
]
}