XML
与JSON
都可以用来描述或者存储数据,两者都有各自的优点,使用场景取决于需求。
可扩展标记语言Extensible Markup Language
,是一种用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型、存储数据等,是一种允许用户对自己的标记语言进行定义的源语言,并提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。 XML
基于标准通用标记语言SGML
与超文本标记语言HTML
发展而来,使用DTD
文档类型定义Document Type Definition
来组织数据,格式统一,跨平台和语言,目前的版本标准为XML 1.0
。
JSON
即JavaScript Object Notation
,是一种轻量级的数据交换格式,其是ECMAScript
规范的一个子集,采用兼容性很高的、完全独立于编程语言的文本格式来存储和表示数据,简洁和清晰的层次结构使得JSON
成为比较理想的数据交换语言,易于阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
可读性方面,JSON
与XML
都作为标准的规范,可读性都比较不错,对于可读性的比较其实还是应该取决于应用场景,对于将完整的XML
映射为JSON
格式的话,XML
的可读性更好一些,对于单纯的数据描述而言,其可读性不相上下。
XML
与JSON
都有很好的扩展性,没有什么是XML
能扩展而JSON
不能的,同样也没有什么是JOSN
能扩展而XML
不能的。
无论是XML
还是JSON
都有丰富的编码工具,但是对于JSON
来说即使不借助工具也能轻易地实现对应格式的编码,相反XML
的编码不借助工具的话就比较难以实现了。
XML
格式的数据的冗余度是大于JSON
格式的数据的,通常而言,XML
比较适合于标记文档,而JSON
却更适于进行数据交换处理。
无论是XML
还是JSON
都有丰富的解析工具,对于XML
而言设计了两种解析方式:DOM
和SAX
,DOM
方式就是将整个XML
读入内存,全部解析;SAX
方式是一种逐步解析的方法,不需要读入整个XML
就可以对解析的内容逐步处理,SAX
适合于大型文档的解析。JSON
只提供整体解析方案,对于数据量较少的文档处理效果比较好。
对于JSON
格式的数据,很多语言都在标准库中提供了支持,直接调用库函数即可解析,特别是对于前端,JSON
是ECMAScript
规范的一个子集,与JavaScript
的交互更加方便,在前端的应用更加广泛,对于XML
格式的数据解析一般都需要借助第三方工具库实现。