XML和JSON数据格式对比
概念
XML
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
http://www.cnblogs.com/SanMaoSpace/p/3139186.html
XML规范:
https://www.w3.org/TR/REC-xml/
例子.
XML数据格式样例:
<employees>
<employee>
<firstName>Bill</firstName>
<lastName>Gates</lastName>
</employee>
<employee>
<firstName>George</firstName>
<lastName>Bush</lastName>
</employee>
<employee>
<firstName>Thomas</firstName>
<lastName>Thomas</lastName>
</employee>
</employees>
JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。
http://www.cnblogs.com/worfdream/articles/1956449.html
JSON规范:
http://json.org/
例子.
JSON数据格式样例:
{
"employees": [
{
"firstName": "Bill",
"lastName": "Gates"
},
{
"firstName": "George",
"lastName": "Bush"
},
{
"firstName": "Thomas",
"lastName": "Carter"
}
]
}
对比
效率实验对比
以概念章节中JSON的例子数据为研究对象, 构造同等的XML数据:
以这两个数据考察,它们分别在相同浏览器中的解析时间,和 查询时间:
在firefox浏览器中:
1、 解析1000次;
2、 查询第二个员工lastName,10000次。
针对两个数据分别构造页面脚本,分别跑5次,实验结果如下:
XML
|
项目 次数 |
1 |
2 |
3 |
4 |
5 |
平均 |
|
解析 |
1646 |
1656 |
1608 |
1650 |
1661 |
1644.2 |
|
查找 |
10 |
10 |
10 |
11 |
11 |
10.4 |
单位(ms)
JSON
|
项目 次数 |
1 |
2 |
3 |
4 |
5 |
平均 |
|
解析 |
4 |
4 |
3 |
3 |
3 |
3.4 |
|
查找 |
1 |
1 |
1 |
1 |
0 |
0.8 |
单位(ms)
总结,JSON的效率远远高于xml,解析效率是xml的484倍,查找效率是13倍。
数据量对比
调查对于同一份数据信息,使用XML描述和JSON描述数据量差别对比。
以效率实验中的数据为对象,统计结果:XML是JSON的1.71倍。
XML: 263Byte
JSON: 154Byte
JSON对于相同信息的描述,比XML更加省数据量,比XML省42%,传输更快。
特性对比
|
XML |
JSON |
|
|
可读性 |
高 |
高 |
|
可扩展性 |
高 |
高 |
|
编写容易度 |
中 |
高 |
|
查找容易度 |
低 |
高 |
|
流行度 |
高 |
中 |
|
数据描述能力 |
高 |
中 |
|
安全性 |
高 |
中 |
说明:
1、 关于流行度,XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。
2、 关于安全性,由于大部分Javascript库都是使用eval()来解析数据,存在执行恶意JSON数据的安全漏洞;当然可以使用专门的JSON解析器来避免这个问题。相比,XML更安全一些。
参考:
https://blog.tanteng.me/2012/09/json-xml-compare/
http://www.cnblogs.com/SanMaoSpace/p/3139186.html
综上所述,XML由于其诞生时间早,相对成熟,在流行度、数据描述能力、安全性相对较高,其它特性JSON较高或者相同。其中编写和查询容易度,关系到开发体验,能提高开发效率,JSON优于XML。
效率实验
json
<!doctype html>
<html>
<head>
</head>
<body> <script type="text/javascript">
function hereDoc(f){
return f.toString().replace(/^[^\/]+\/\*!?\s?/, '').replace(/\*\/[^\/]+$/, '');
} var jsonstring = hereDoc(function(){/*
{
"employees": [
{
"firstName": "Bill",
"lastName": "Gates"
},
{
"firstName": "George",
"lastName": "Bush"
},
{
"firstName": "Thomas",
"lastName": "Carter"
}
]
}
*/}); // 统计解析耗时
var starttime = (new Date()).getTime();
for (var i = 0; i < 1000; i++) {
JSON.parse(jsonstring);
};
var endtime = (new Date()).getTime();
console.log("parsing consume time ="+(endtime - starttime)) // 查询第二个成员lastName
var starttime = (new Date()).getTime();
var jsonObj = JSON.parse(jsonstring);
//console.log("lastName = "+lastName)
for (var i = 0; i < 10000; i++) {
var lastName = jsonObj.employees[1].lastName
};
var endtime = (new Date()).getTime();
console.log("finding consume time ="+(endtime - starttime)) </script> </body>
</html>
xml
<!doctype html>
<html>
<head>
</head>
<body> <script type="text/javascript">
function hereDoc(f){
return f.toString().replace(/^[^\/]+\/\*!?\s?/, '').replace(/\*\/[^\/]+$/, '');
} function GetXMLParseFunc() {
if (window.DOMParser)
{
var parser=new DOMParser();
return function (xmlstring) {
return parser.parseFromString(xmlstring,"text/xml");
}
}
else // Internet Explorer
{
console.log("not support DOMParser");
// xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
// xmlDoc.async="false";
// xmlDoc.loadXML(txt);
}
} var xmlstring = hereDoc(function(){/*
<employees>
<employee>
<firstName>Bill</firstName>
<lastName>Gates</lastName>
</employee>
<employee>
<firstName>George</firstName>
<lastName>Bush</lastName>
</employee>
<employee>
<firstName>Thomas</firstName>
<lastName>Thomas</lastName>
</employee>
</employees>
*/}); var parseFunc = GetXMLParseFunc(); // 统计解析耗时
var starttime = (new Date()).getTime();
for (var i = 0; i < 1000; i++) {
parseFunc(xmlstring);
};
var endtime = (new Date()).getTime();
console.log("parsing consume time ="+(endtime - starttime)) // 查询第二个成员lastName
var starttime = (new Date()).getTime();
var xmlObj = parseFunc(xmlstring);
for (var i = 0; i < 10000; i++) {
var lastName = xmlObj.getElementsByTagName("employee")[1].getElementsByTagName("lastName")[0].childNodes[0].nodeValue
//console.log("lastName = "+lastName)
};
var endtime = (new Date()).getTime();
console.log("finding consume time ="+(endtime - starttime)) </script> </body>
</html>
XML和JSON数据格式对比的更多相关文章
- XML与JSON的对比
XML与JSON的对比 1.各自定义 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类 ...
- xml 和json 数据格式及解析
来源:http://blog.jobbole.com/79252/ 引言 NOKIA 有句著名的广告语:“科技以人为本”.任何技术都是为了满足人的生产生活需要而产生的.具体到小小的一个手机,里面蕴含的 ...
- XML和JSON数据格式
目录 XML DTD(文档类型定义) DTD实体 JSON 使用python解析JSON数据 XML和JSON的区别 XML的优缺点 JSON的优缺点 XML和JSON都是web存储和传输过程中数据的 ...
- XML和JSON的对比
简介: 客户端和服务器之间进行数据交互时,服务器往往会返回给客户端一定格式的数据.一般而言,服务器返回给客户端的数据为JSON或者XML文档格式的数据(文件下载除外).下面就针对于这两种数据格式分别介 ...
- xml和json的区别
本文转自SanMaoSpace的博客 链接地址如下:http://www.cnblogs.com/SanMaoSpace/p/3139186.html 1.定义介绍 (1).XML定义扩展标记语言 ( ...
- 全面剖析XML和JSON
1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...
- 用xml还是json
1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允 ...
- [Android]XML和JSON的区别
1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允 ...
- 浅析XML和JSON的区别
前言 今天做接口对接时,发现对方竟然是通过XML进行数据传输,当时冒出的第一个想法就是:WTF,这都什么年代了,还在用XML,是来搞笑的吧,JSON它不香吗? 想法归想法,但对接还是要完成的是吧?然后 ...
随机推荐
- Tortoise SVN 使用帮助
同步至本地:新建文件夹,SNV checkout 输入用户名密码,确认. 上传文件:将要上传的文件放在一个文件夹里,选择要上传的文件所在的文件夹,右键单击,tortoiseSVN,Import,选择要 ...
- webbench之编译安装(一)
1.编译安装: 1 2 3 4 [root@hexuweb102 ~]$wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar ...
- HDU 2082 找单词 (多重背包)
题意:假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26.那么,对于给定的字母,可以找到多少价值<=50的 ...
- 分布式缓存技术memcached学习(四)—— 一致性hash算法原理
分布式一致性hash算法简介 当你看到“分布式一致性hash算法”这个词时,第一时间可能会问,什么是分布式,什么是一致性,hash又是什么.在分析分布式一致性hash算法原理之前,我们先来了解一下这几 ...
- wenbenfenlei
ICTCLAS: 该分词系统的主要思想是先通过CHMM(层叠形马尔可夫模型)进行分词,通过分层,既增加了分词的准确性,又保证了分词的效率.基本思路是:先进行原子切分,然后在此基础上进行N-最短路径粗切 ...
- Linux 下MySql 重置密码
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录 ...
- Android自动化测试-自动获取cpu和内存信息
CpuInfo.java package com.dtest; import java.io.BufferedReader; import java.io.FileWriter; import jav ...
- 洛谷 P1373 小a和uim之大逃离 Label:dp 不会
题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...
- BZOJ1090: [SCOI2003]字符串折叠
区间dp. 一种是分段dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]); 一种是这一段可以缩写dp[i][j]=min(dp[i][j],dp[i][l]+2+ca ...
- jQuery插件入门
一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写("#"),("#"),("."),写了几年就对别人说非常熟悉JQ ...