XML
定义
可扩展性标
记语言
(Extensible Markup Language, XML)
,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
XML
使用
DTD(document type definition)
文档类型定义来组织数据
;
格式统一,跨平台和语言,早已成为业界公认的标准。
XML
是标准通用标记语言
(SGML)
的子集,非常适合
Web
传输。
XML
提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
JSON定义
JSON(JavaScript Object Notation)
一种轻量级的
数据交换格式
,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。
JSON
采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于
C
语言的习惯
(
包括
C, C++, C#, Java, JavaScript, Perl, Python
等
)
体系的行为。这些特性使
JSON
成为理想的数据交换语言。
HTML
超文本标记语言
,标准通用标记语言下的一个应用。
“
超文本
”
就是指页面内可以包含
图片
、
链接
,甚至
音乐
、
程序
等非文字元素。 超文本标记语言的结构包括
“
头
”
部分(英语:
Head
)、和
“
主体
”
部分(英语:
Body
),其中
“
头
”
部提供关于网页的信息,
“
主体
”
部分提供网页的具体内容。
1.
XML
与
html
有什么关系
?
XML
是一种类似于
HTML
的标记语言,
XML
是用来描述数据的,
XML
的标记不是在
XML
中预定义的,你必须定义自己的标记
,
XML
使用文档类型定义
(DTD)
或者模式
(Schema)
来描述数据,
XML
使用
DTD
或者
Schema
后就是自描述的语言,
XML
(
eXtensibleMarkupLanguage
)是可扩展标记语言,它与
HTML
一样
,都是处于
SGML
,标准通用语言。
Xml
是
Internet
环境中跨平台的,依赖于内容的技术,
是当前处理结构化文档信息的有力工具。扩展标记语言
XML
是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然
XML
占用的空间比二进制数据要占用更多的空间,但
XML
极其简单易于掌握和使用。
XML
的简单使其易于在任何应用程序中读写数据
,这使
XML
很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持
XML
,那就意味着程序可以更容易的与
Windows
、
MacOS,Linux
以及其他平台下产生的信息结合,然后可以很容易加载
XML
数据到程序中并分析他,并以
XML
格式输出结果。
因为
XML
是
W3C
制定的,
XML
的标准化工作由
W3C
的
XML
工作组负责,该小组成员由来自各个地方和行业的专家组成,他们通过
email
交流对
XML
标准的意见,并提出自己的看法
(www.w3.org/TR/WD-xml)
。因为
XML
是个公共格式,
(
它不专属于任何一家公司
)
,你不必担心
XML
技术会成为少数公司的盈利工具,
XML
不是一个依附于特定浏览器的语言。
2.
X
M
L
和
HTML
的主要区别是什么?
XML
和
HTML
的不同可以归纳为
3
点:
一、
XML
扩展性比
HTML
强
XML
(
Extensible Markup Languages
)是扩展标记语言的英语缩写,他可以创建个性化的标记语言,可以称之为元语言。
XML
的标记语言可以自定义,这样可以提供更多的数据操作,而不像
HTML
一样,只能局限于按一定的格式在终端显示出来。
HTML
的功能只有浏览器放入显示和打印,仅仅适合静态网页的要求。
二、
XML
的语法比
HTML
严格
由于
XML
的扩展性强,它需要稳定的基础规则来支持扩展。它的严格规则为:
①
起始和结束的标签相匹配
②
嵌套标签不能相互嵌套
③
区分大小写
相对应
XML
的严格规则,
HTML
语言并没有规定标签的绝对位置,也不区分大小写,而这些全部由浏览器来完成识别和更正。
三、
XML
与
HTML
互补
XML
可以获得应用之间的相应信息,提供终端的多项处理要求,也能被其他的解析器和工具所使用,
在现阶段,
XML
可以转化成相应的
HTML
,来适应当前浏览器的需求。
3.
XML和JSON优缺点
(1).XML
的优缺点
<1>.XML
的优点
A.
格式统一,符合标准;
B.
容易与其他系统进行远程交互,数据共享比较方便。
<2>.XML
的缺点
A.
XML
文件庞大,文件格式复杂,传输占带宽;
B.
服务器端和客户端都需要花费大量代码来解析
XML
,导致服务器端和客户端代码变得异常复杂且不易维护;
C.
客户端不同浏览器之间解析
XML
的方式不一致,需要重复编写很多代码;
D.
服务器端和客户端解析
XML
花费较多的资源和时间。
(2).JSON
的优缺点
<1>.JSON
的优点:
A.
数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
B.
易于解析,客户端
JavaScript
可以简单的通过
eval()
进行
JSON
数据的读取;
C.
支持多种语言,包括
ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby
等服务器端语言,便于服务器端的解析;
D.
在
PHP
世界,已经有
PHP-JSON
和
JSON-PHP
出现了,偏于
PHP
序列化后的程序直接调用,
PHP
服务器端的对象、数组等能直接生成
JSON
格式,便于客户端的访问提取;
E.
因为
JSON
格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
<2>.JSON
的缺点
A.
没有
XML
格式这么推广的深入人心和喜用广泛,没有
XML
那么通用性;
B.JSON
格式目前在
Web Service
中推广还属于初级阶段。
4.
XML和JSON的优缺点对比
(1).
可读性方面。
JSON
和
XML
的数据可读性基本相同,
JSON
和
XML
的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,
XML
可读性较好些。
(2).
可扩展性方面。
XML
天生有很好的扩展性,
JSON
当然也有,没有什么是
XML
能扩展,
JSON
不能的。
(3).
编码难度方面。
XML
有丰富的编码工具,比如
Dom4j
、
JDom
等,
JSON
也有
json.org
提供的工具,但是
JSON
的编码明显比
XML
容易许多,即使不借助工具也能写出
JSON
的代码,可是要写好
XML
就不太容易了。
(4).
解码难度方面。
XML
的解析得考虑子节点父节点,让人头昏眼花,而
JSON
的解析难度几乎为
0
。这一点
XML
输的真是没话说。
(5).
流行度方面。
XML
已经被业界广泛的使用,而
JSON
才刚刚开始,但是在
Ajax
这个特定的领域,未来的发展一定是
XML
让位于
JSON
。到时
Ajax
应该变成
Ajaj(Asynchronous Javascript and JSON)
了。
(6).
解析手段方面。
JSON
和
XML
同样拥有丰富的解析手段。
(7).
数据体积方面。
JSON
相对于
XML
来讲,数据的体积小,传递的速度更快些。
(8).
数据交互方面。
JSON
与
JavaScript
的交互更加方便,更容易解析处理,更好的数据交互。
(9).
数据描述方面。
JSON
对数据的描述性比
XML
较差。
(10).
传输速度方面。
JSON
的速度要远远快于
XML
。
5.
XML与JSON数据格式比较
(1).
关于轻量级和重量级
轻量级和重量级是相对来说的,那么
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
仍有不可动摇的地位。
(3).
实例比较
XML
和
JSON
都使用结构化方法来标记数据,下面来做一个简单的比较。
<1>.
用
XML
表示中国部分省市数据如下:
<?
xml version=”1.0″ encoding=”utf-8″
?>
<
country
>
<
name
>
中国
</
name
>
<
province
>
<
name
>
黑龙江
</
name
>
<
citys
>
<
city
>
哈尔滨
</
city
>
<
city
>
大庆
</
city
>
</
citys
>
</
province
>
<
province
>
<
name
>
广东
</
name
>
<
citys
>
<
city
>
广州
</
city
>
<
city
>
深圳
</
city
>
<
city
>
珠海
</
city
>
</
citys
>
</
province
>
<
province
>
<
name
>
台湾
</
name
>
<
citys
>
<
city
>
台北
</
city
>
<
city
>
高雄
</
city
>
</
citys
>
</
province
>
<
province
>
<
name
>
新疆
</
name
>
<
citys
>
<
city
>
乌鲁木齐
</
city
>
</
citys
>
</
province
>
</
country
>
<2>.
用
JSON
表示中国部分省市数据如下:
var
country =
{
name: “中国”,
provinces: [
{ name: “黑龙江”, citys: { city: [“哈尔滨”, “大庆”]} },
{ name: “广东”, citys: { city: [“广州”, “深圳”, “珠海”]} },
{ name: “台湾”, citys: { city: [“台北”, “高雄”]} },
{ name: “新疆”, citys: { city: [“乌鲁木齐”]} }
]
}
编码的可读性来说
,
XML
有明显的优势,毕竟人类的语言更贴近这样的说明结构。
JSON
读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过
JSON
的索引
country.provinces[0].name
就能够读取
“
黑龙江
”
这个值。
编码的手写难度来说
,
XML
还是舒服一些,好读当然就好写。不过写出来的字符
JSON
就明显少很多。去掉空白制表以及换行的话,
JSON
就是密密麻麻的有用数据,而
XML
却包含很多重复的标记字符。