XML数据格式

① 什么是XML

XML 指可扩展标记语言(EXtensible Markup Language)。XML是一种很像HTML的标记语言。

XML 的设计宗旨是传输数据,而不是显示数据。XML 标签没有被预定义。我们需要自行定义标签。XML具有自我描述性。是W3C推荐的数据传输标准。

 

(1)XML 和 HTML 之间的差异

XML 不是 HTML 的替代。

XML 和 HTML 为不同的目的而设计:

XML 被设计用来传输和存储数据,其焦点是数据的内容

HTML 被设计用来显示数据,其焦点是数据的外观。HTML 旨在显示信息,而 XML 旨在传输信息。

 

(2)XML 不会做任何事情

也许这有点难以理解,但是 XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。

下面实例是 Jani 写给 Tove 的便签,存储为 XML:

 

上面的这条便签具有自我描述性。它包含了发送者和接受者的信息,同时拥有标题以及消息主体。

但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。

 

(3)通过XML可以发明自己的标签

上面实例中的标签没有在任何 XML 标准中定义过(比如 <to> 和 <from>)。这些标签是由 XML 文档的创作者发明的。

这是因为 XML 语言没有预定义的标签。

HTML 中使用的标签都是预定义的。HTML 文档只能使用在 HTML 标准中定义过的标签(如 <p>、<h1> 等等)。

XML 允许创作者定义自己的标签和自己的文档结构。

 

② XML用途

XML 应用于 Web 开发的许多方面,常用于简化数据的存储和共享。

 

(1)XML把数据从HTML分离

通过 XML,数据能够存储在独立的 XML 文件中。这样就可以专注于使用 HTML/CSS 进行显示和布局,并确保修改底层数据不再需要对 HTML 进行任何的改变。

通过使用几行 JavaScript 代码,我们就可以读取一个外部 XML 文件,并更新网页的数据内容。

 

(2)XML简化数据共享

在真实的世界中,计算机系统和数据使用不兼容的格式来存储数据。

XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。

这让创建不同应用程序可以共享的数据变得更加容易。

 

(3)XML简化数据传输

对开发人员来说,其中一项最费时的挑战一直是在互联网上的不兼容系统之间交换数据。由于可以通过各种不兼容的应用程序来读取数据,以 XML 交换数据降低了这种复杂性。

 

(4)XML简化平台变更

升级到新的系统(硬件或软件平台),总是非常费时的。必须转换大量的数据,不兼容的数据经常会丢失。

XML 数据以文本格式存储。这使得 XML 在不损失数据的情况下,更容易扩展或升级到新的操作系统、新的应用程序或新的浏览器。

通过 XML,数据可供各种阅读设备使用(掌上计算机、语音设备、新闻阅读器等),还可以供盲人或其他残障人士使用。

 

③ XML树结构

XML文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。这一点和HTML比较相似

一个XML文档实例

XML文档使用简单的具有自我描述性的语法:

 

第一行是 XML 声明。它定义 XML 的版本(1.0)和所使用的编码(UTF-8 : 万国码, 可显示各种语言)。

下一行描述文档的根元素(像在说:"本文档是一个便签"):

<note>

接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body):

 

最后一行定义根元素的结尾:<note>

我们可以假设,从这个实例中,XML 文档包含了一张 Jani 写给 Tove 的便签。

从上面可以看出,XML 具有出色的自我描述性,XML 文档形成一种树结构。XML 文档必须包含根元素。该元素是所有其他元素的父元素。

 

XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。

所有的元素都可以有子元素,如下:

 

父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。

所有的元素都可以有文本内容和属性(类似 HTML 中)。

实例:

 

上图表示下面的 XML 中的一本书:

XML 文档实例

 

实例中的根元素是 <bookstore>。文档中的所有 <book> 元素都被包含在 <bookstore> 中。<book> 元素有 4 个子元素:<title>、<author>、<year>、<price>。

 

④ XML元素和属性

下面我们来看两个实例:表述的是一样的意思,但是在写法上有一些区别

 

 

在第一个实例中,sex 是一个属性。

在第二个实例中,sex 是一个元素。

这两个实例都提供相同的信息。

没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用元素。我的经验是在 HTML 中,属性用起来很便利,但是在 XML 中,应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用元素。

 

下面的三个XML文档包含完全相同的信息:

第一个实例中使用了 date 属性:

 

第二个实例中使用了 date 元素:

 

第三个实例中使用了扩展的 date 元素(推荐的方式):

 

 

尽量避免 XML 属性,因使用属性而引起的一些问题:

1. 属性不能包含多个值(元素可以)

2. 属性不能包含树结构(元素可以)

3. 属性不容易扩展(为未来的变化)

属性难以阅读和维护。请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。

不要做这样的蠢事(这不是 XML 应该被使用的方式):

 

posted @ 2017-08-15 17:31  绝版扫地僧  阅读(1710)  评论(0编辑  收藏  举报