xml读写规则
![](/img/5_%E9%9F%B3%E8%A7%86%E9%A2%91%E5%8D%8F%E8%AE%AE/xml%E8%AF%BB%E5%86%99%E8%A7%84%E5%88%99/xml%E8%AF%BB%E5%86%99%E8%A7%84%E5%88%99.png)
# 避免 “:” 字符。冒号会被转换为命名空间来使用
表格定义:标签结构
数据对应:指定元素
所有的标题都用<>来表示。
示例
<新闻>
<新闻>
<id><1001><\id>
<标题><尚......><\标题>
<>......
......
<\新闻>
<id><1002><\id>
<标题><JAVA......><\标题>
<>......
......
<\新闻>
XML 被设计用来传输和存储数据。
HTML 被设计用来显示数据。
XML 简化数据传输
通过 XML,可以在不兼容的系统之间轻松地交换数据。
对开发人员来说,其中一项最费时的挑战一直是在因特网
上的不兼容系统之间交换数据。
由于可以通过各种不兼容的应用程序来读取数据,
以 XML 交换数据降低了这种复杂性。
XML 简化平台的变更
升级到新的系统(硬件或软件平台),总是非常费时的。
必须转换大量的数据,不兼容的数据经常会丢失。
XML 数据以文本格式存储。这使得 XML 在不损失数据的情况下,
更容易扩展或升级到新的操作系统、新应用程序或新的浏览器。
XML 标签对大小写敏感
XML 元素使用 XML 标签进行定义。
XML 标签对大小写敏感。在 XML 中,标签 <Letter> 与标签 <letter> 是不同的。
必须使用相同的大小写来编写打开标签和关闭标签:
1 2 3
| <Message>这是错误的。</message>
<message>这是正确的。</message>
|
XML 必须正确地嵌套
在 HTML 中,常会看到没有正确嵌套的元素:
1 2 3
| <b><i>This text is bold and italic</b></i> 在 XML 中,所有元素都必须彼此正确地嵌套: <b><i>This text is bold and italic</i></b>
|
在上例中,正确嵌套的意思是:由于 <i> 元素是在 <b> 元素内打开的,
那么它必须在 <b> 元素内关闭。
XML 文档必须有根元素
XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。
1 2 3 4 5
| <root> <child> <subchild>.....</subchild> </child> </root>
|
XML 的属性值须加引号
与 HTML 类似,XML 也可拥有属性(名称/值的对)。
XML 元素可以在开始标签中包含属性,类似 HTML。
属性 (Attribute) 提供关于元素的额外(附加)信息。
在 XML 中,XML 的属性值须加引号。请研究下面的两个 XML 文档。
第一个是错误的,第二个是正确的:
1 2 3 4 5 6 7 8
| <note date=08/08/2008> <to>George</to> <from>John</from> </note> <note date="08/08/2008"> <to>George</to> <from>John</from> </note>
|
在第一个文档中的错误是,note 元素中的 date 属性没有加引号。
XML 属性必须加引号
属性值必须被引号包围,不过单引号和双引号均可使用。
比如一个人的性别,person 标签可以这样写:
1 2 3 4 5 6 7 8 9 10
| <person sex="female"> 或者这样也可以:
<person sex='female'> 注释:如果属性值本身包含双引号,那么有必要使用单引号包围它,就像这个例子:
<gangster name='George "Shotgun" Ziegler'> 或者可以使用实体引用:
<gangster name="George "Shotgun" Ziegler">
|
XML 中的注释
在 XML 中编写注释的语法与 HTML 的语法很相似:
1
| <!-- This is a comment -->
|
在 XML 中,空格会被保留
HTML 会把多个连续的空格字符裁减(合并)为一个:
1 2 3
| HTML: Hello my name is David. 输出: Hello my name is David. 在 XML 中,文档中的空格不会被删节。
|
XML 文档包含 XML 元素。
什么是 XML 元素?
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <bookstore> <book category="CHILDREN"> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
|
在上例中,<bookstore> 和 <book> 都拥有元素内容,因为它们包含了其他元素。
<author> 只有文本内容,因为它仅包含文本。
在上例中,只有 <book> 元素拥有属性 (category="CHILDREN")。
XML 元素是可扩展的
XML 元素是可扩展,以携带更多的信息。
请看下面这个 XML 例子:
1 2 3 4 5
| <note> <to>George</to> <from>John</from> <body>Don't forget the meeting!</body> </note>
|
让我们设想一下,我们创建了一个应用程序,可将 、 以及 元素提取出来,并产生以下的输出:
1 2 3 4 5
| MESSAGE To: George From: John
Don't forget the meeting!
|
想象一下,之后这个 XML 文档作者又向这个文档添加了一些额外的信息:
1 2 3 4 5 6 7
| <note> <date>2008-08-08</date> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
|
那么这个应用程序会中断或崩溃吗?
不会。这个应用程序仍然可以找到 XML 文档中的 <to>、
<from> 以及 <body> 元素,并产生同样的输出。
XML 的优势之一,就是可以经常在不中断应用程序的情况进行扩展。
XML 命名空间提供避免元素命名冲突的方法。
命名冲突
在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,
就会发生命名冲突。
这个 XML 文档携带着某个表格中的信息:
1 2 3 4 5 6
| <table> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table>
|
这个 XML 文档携带有关桌子的信息(一件家具):
1 2 3 4 5 6 7
| <table> <tr> <name>African Coffee Table</name> <width>80</width> <length>120</length> </tr> </table>
|
假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和
定义的 <table> 元素,就会发生命名冲突。
XML 解析器无法确定如何处理这类冲突。
本篇完结!