XML与JSON的对比
XML与JSON的对比1、各自定义XML 扩展标记语言 (Extensible Markup Language,XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。 JSON建构于两种结构: “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。 关于JSON的更多描述,可见:http://json.org
2.XML和JSON对比XML 1)应用广泛,可扩展性强,被广泛应用各种场合 XML的应用已经深入人心,不再赘述。 JSON 4)描述复杂结构能力较弱 JavaScript、PHP等原生支持,简化了读取解析。成为当前互联网时代普遍应用的数据结构。
3、XML与JSON转换常常会用到XML与JSON之间的转换,在这里可以更加清晰了解两者之间的区别。 1)常规转换 常规的节点转换,以下的案例能够直观的看到彼此之间的转换原理。 XML是节点名与值,JSON也是KEY与VALUE的键值对。这样的转换是最简单的。 XML: <Student>张三</Student> 转为JSON: { "Student": "张三" } 这个过程是可逆的,JSON可以很简单转为XML。 2) XML节点含有属性 节点含有属性,其转换就不同了,在JSON中,XML属性也作为了JSON对象的属性,为了区别与其他的节点,这里节点名增加特殊的前缀标识"@"以标识是属性, 另外一个比较奇怪的是,节点的值,增加属性名,且有特殊前缀,“#text”。这样的处理可以使得XML与JSON的转换实现可逆操作。JSON中@开头的,转为XML时,需要生成节点属性,#text则为节点的内容。这里的转换是常用的转换器的通用做法。 以下的转换例子 XML: <Student ID="1001">张三</Student> 转为JSON { "Student": { "@ID": "1001","#text": "张三" } }
3)有属性的节点生成对象 例1,无属性节点,简单的字符串数组
line>
item>name>age>
转为JSON:
{
"line": {
"item": [
"name","age"
]
}
}
例2,有属性的转为对象,无属性的则直接转为字符串 有属性节点 item font-size="20"
{ "line": { "item": [ { "@font-size": "20","#text": "name" },sans-serif; line-height:18px"> 4) XML的节点顺序性 |