XML 与 JSON 数据格式比较

166 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天点击查看活动详情
一、XML 与 JSON 数据格式比较
轻量级和重量级是相对来说的,那么 XML 相对于 JSON 的重量级体现在哪呢?应该体现在解析上,XML 目前设计了两种解析方式:DOM 和 SAX。
<1>.DOM
DOM 是把一个数据交换格式 XML 看成一个 DOM 对象,需要把 XML 文件整个读入内存,这一点上 JSON 和 XML 的原理是一样的,但是 XML 要考虑父节点和子节点,这一点上JSON 的解析难度要小很多,因为 JSON 构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;

<2>.SAX
SAX 不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以 SAX适合于大规模的解析。这一点,JSON 目前是做不到得。所以,JSON 和 XML 的轻/重量级的区别在于:JSON 只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;XML 提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。

2.关于数据格式编码及解析难度
<1>.在编码方面。
虽然 XML 和 JSON 都有各自的编码工具,但是 JSON 的编码要比 XML 简单,即使不借助工具,也可以写出 JSON 代码,但要写出好的 XML 代码就有点困难;与 XML 一样,JSON 也是基于文本的,且它们都使用 Unicode 编码,且其与数据交换格式 XML 一样具有可读性。主观上来看,JSON 更为清晰且冗余更少些。JSON 网站提供了对 JSON 语法的严格描述,只是描述较简短。从总体来看,XML 比较适合于标记文档,而 JSON 却更适于进行数据交换处理。

<2>.在解析方面。
在普通的 web 应用领域,开发者经常为 XML 的解析伤脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 宣称的扩展性在此就很少具有优势,许多 Ajax 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。同 XML 或 HTML 片段相比,数据交换格式 JSON 提供了更好的简单性和灵活性。在 Web Serivice 应用中,至少就目前来说 XML 仍有不可动摇的地位。