# XML和JSON的比较 `XML`与`JSON`都可以用来描述或者存储数据,两者都有各自的优点,使用场景取决于需求。 ## 概述 ### XML 可扩展标记语言`Extensible Markup Language`,是一种用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型、存储数据等,是一种允许用户对自己的标记语言进行定义的源语言,并提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。 `XML`基于标准通用标记语言`SGML`与超文本标记语言`HTML`发展而来,使用`DTD`文档类型定义`Document Type Definition`来组织数据,格式统一,跨平台和语言,目前的版本标准为`XML 1.0`。 ### JSON `JSON`即`JavaScript Object Notation`,是一种轻量级的数据交换格式,其是`ECMAScript`规范的一个子集,采用兼容性很高的、完全独立于编程语言的文本格式来存储和表示数据,简洁和清晰的层次结构使得`JSON`成为比较理想的数据交换语言,易于阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 ## 比较 ### 可读性方面 可读性方面,`JSON`与`XML`都作为标准的规范,可读性都比较不错,对于可读性的比较其实还是应该取决于应用场景,对于将完整的`XML`映射为`JSON`格式的话,`XML`的可读性更好一些,对于单纯的数据描述而言,其可读性不相上下。 ```xml Hello World ``` ```javascript { tag: "block", name: "show", children:[ { tag: "content", children:[ "Hello World" ] } ] } ``` ### 可扩展性方面 `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`格式的数据解析一般都需要借助第三方工具库实现。 ## 每日一题 ``` https://github.com/WindrunnerMax/EveryDay ``` ## 参考 ``` https://www.cnblogs.com/SanMaoSpace/p/3139186.html ```