菜鸟教程:www.runoob.com
一、什么是XML
XML指可扩展标记语言(Extensible Markup Language),被设计用来传输和存储数据。
XML文档实例:
<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
可以看出,XML是一种很像HTML的标记语言,设计宗旨是传输数据,而不是显示数据;XML没有预定义的标签,需要我们自定义标签;XML被设计为具有自我描述性;XML是W3C的推荐标准。
XML不会做任何事情,XML被设计用来结构化、存储以及传输信息。上面的这条便签具有自我描述性,它包含了发送者和接收者的信息,同时拥有标题以及消息的主体。但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。
我们可以通过XML定义自己的标签,上面实例中的标签没有在任何 XML 标准中定义过(比如 <to> 和 <from>)。这些标签是由 XML 文档的编写者发明的,这是因为 XML 语言没有预定义的标签,XML 允许创作者定义自己的标签和自己的文档结构。
XML不是HTML的替代,而是对HTML的补充,XML是独立于软件和硬件的信息传输工具。XML是W3C推荐的标准,XML无处不在。
二、XML的用途
XML应用于Web开发的许多方面,常用于简化数据的存储和共享。
XML把数据从HTML中分离:
如果您需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑 HTML。通过 XML,数据能够存储在独立的 XML 文件中。这样您就可以专注于使用 HTML/CSS 进行显示和布局,并确保修改底层数据不再需要对 HTML 进行任何的改变。通过使用几行 JavaScript 代码,您就可以读取一个外部 XML 文件,并更新您的网页的数据内容。
XML简化数据共享:
XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。这让创建不同应用程序可以共享的数据变得更加容易。
XML简化数据传输:
对开发人员来说,其中一项最费时的挑战一直是在互联网上的不兼容系统之间交换数据。由于可以通过各种不兼容的应用程序来读取数据,以 XML 交换数据降低了这种复杂性。
三、XML结构
XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。树结构是通常被称为 XML 树,并且可以很容易地描述任何 XML 文档。 通过采用树状结构,你可以知道所有从根开始的后续的分行及支行。
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
第一行是 XML 声明。它定义 XML 的版本(1.0)和所使用的编码(ISO-8859-1 = Latin-1/西欧字符集)。下一行描述文档的根元素(像在说:"本文档是一个便签"),接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body),最后一行定义根元素的结尾。
XML文档形成一种树结构:
XML 文档必须包含根元素。该元素是所有其他元素的父元素。XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有的元素都可以有子元素。父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。所有的元素都可以有文本内容和属性(类似 HTML 中)。
实例:XML表示书
一本书的XML文档结构图:
XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
实例中的根元素是 <bookstore>书店。文档中的所有 <book> 元素都被包含在 <bookstore> 中。<book> 元素有 4 个子元素:<title>、<author>、<year>、<price>。
四、XML语法
XML基本语法:
- 所有的 XML 元素都必须有一个关闭标签(除了XML文档第一行的声明)。
- XML标签对大小写敏感。
- XML必须正确嵌套。
- XML文档必须包含根元素,是其他所有元素的父元素。
- 属性值必须加引号。
- 实体引用。
在 XML 中,一些字符拥有特殊的意义。如果您把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。这样会产生错误:
<message>if salary < 1000 then</message>
为了避免这个错误,请用实体引用来代替 "<" 字符:
<message>if salary < 1000 then</message>
在 XML 中,有 5 个预定义的实体引用:
< | < | less than |
> | > | greater than |
& | & | ampersand |
' | ' | apostrophe |
" | " | quotation mark |
在 XML 中,只有字符 "<" 和 "&" 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。
- XML中的注释:XML 中编写注释的语法与 HTML 的语法很相似。<!-- -->
- 在XML中,空格会被保留,不像HTML那样把多个空格合并为一个空格。
- XML中以 LF 存储换行。
- 在 Windows 应用程序中,换行通常以一对字符来存储:回车符(CR)和换行符(LF)。
- 在 Unix 和 Mac OSX 中,使用 LF 来存储新行。
- 在旧的 Mac 系统中,使用 CR 来存储新行。
- XML 以 LF 存储换行。