Java学习笔记(十三一)——Xml 常用知识总结
【前面的话】
在学习spring框架,发现很多地方都用到了Xml的知识,所以会过头来再学习学习Xml。
本章学习的是Xml的基础,所以基础性文章,选择性阅读。
【Xml】
一、Xml初步了解
XML 指可扩展标记语言
XML 被设计用来传输和存储数据。
二、什么是Xml?
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 标签没有被预定义。您需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
三、Xml和Html的区别
- XML 不是 HTML 的替代。
- XML 和 HTML 为不同的目的而设计:
- XML 被设计为传输和存储数据,其焦点是数据的内容。
- HTML 被设计用来显示数据,其焦点是数据的外观。
- HTML 旨在显示信息,而 XML 旨在传输信息。
四、Xml的特点
1. 没有任何行为的 XML,XML 是不作为的。
XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。
如下:
1 <note> 2 <to>dear</to> 3 <from>TT</from> 4 <heading>Love</heading> 5 <body>I Love You!</body> 6 </note>
这个XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。
2. XML 仅仅是纯文本
3. 通过 XML 您可以发明自己的标签
五、Xml的用途
- XML 把数据从 HTML 分离
- XML 简化数据共享
- XML 简化数据传输
- XML 简化平台的变更
- XML 使您的数据更有用
- XML 用于创建新的 Internet 语言
- 假如开发人员都是理性的,就让未来的应用程序使用 XML 来交换数据吧。
六、Xml的树结构
上图表示下面的 XML 中的一本书:
1 <bookstore> 2 <book category="COOKING"> 3 <title lang="en">Everyday Italian</title> 4 <author>Giada De Laurentiis</author> 5 <year>2005</year> 6 <price>30.00</price> 7 </book> 8 <book category="CHILDREN"> 9 <title lang="en">Harry Potter</title> 10 <author>J K. Rowling</author> 11 <year>2005</year> 12 <price>29.99</price> 13 </book> 14 <book category="WEB"> 15 <title lang="en">Learning XML</title> 16 <author>Erik T. Ray</author> 17 <year>2003</year> 18 <price>39.95</price> 19 </book> 20 </bookstore>
七、Xml的语法
- 所有 XML 元素都须有关闭标签
- XML 标签对大小写敏感
- XML 必须正确地嵌套
- XML 文档必须有根元素
- XML 的属性值须加引号
- 实体引用
在 XML 中,一些字符拥有特殊的意义。如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。
下面的发生错误:
1 <message>if salary < 1000 then</message>
应该为如下:
1 <message>if salary < 1000 then</message>
在 XML 中,有 5 个预定义的实体引用:
< |
< |
小于 |
> |
> |
大于 |
& |
& |
和号 |
' |
' |
单引号 |
" |
" |
引号 |
7. XML 中的注释
如下:
1 <!-- This is a comment -->
8. 在 XML 中,空格会被保留——在 XML 中,文档中的空格不会被删节
9. XML 以 LF 存储换行
八、Xml的命名规则
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格
九、 XML 元素
- XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
- 例子:
1 <bookstore> 2 <book category="COOKING"> 3 <title lang="en">Everyday Italian</title> 4 <author>Giada De Laurentiis</author> 5 <year>2005</year> 6 <price>30.00</price> 7 </book> 8 <book category="CHILDREN"> 9 <title lang="en">Harry Potter</title> 10 <author>J K. Rowling</author> 11 <year>2005</year> 12 <price>29.99</price> 13 </book> 14 <book category="WEB"> 15 <title lang="en">Learning XML</title> 16 <author>Erik T. Ray</author> 17 <year>2003</year> 18 <price>39.95</price> 19 </book> 20 </bookstore>
在上例中,<bookstore> 和 <book> 都拥有元素内容,因为它们包含了其他元素。<author> 只有文本内容,因为它仅包含文本。
在上例中,只有 <book> 元素拥有属性 (category="CHILDREN")。
十、XML 属性
- XML 属性必须加引号
- 使用属性还是使用元素,下面的例子说明:
第一个例子中使用了 date 属性:
1 <note date="08/08/2008"> 2 <to>George</to> 3 <from>John</from> 4 <heading>Reminder</heading> 5 <body>Don't forget the meeting!</body> 6 </note>
第二个例子中使用了 date 元素:
1 <note> 2 <date>08/08/2008</date> 3 <to>George</to> 4 <from>John</from> 5 <heading>Reminder</heading> 6 <body>Don't forget the meeting!</body> 7 </note>
第三个例子中使用了扩展的 date 元素(这是我的最爱):
1 <note> 2 <date> 3 <day>08</day> 4 <month>08</month> 5 <year>2008</year> 6 </date> 7 <to>George</to> 8 <from>John</from> 9 <heading>Reminder</heading> 10 <body>Don't forget the meeting!</body> 11 </note>
十一、命名空间
1. 命名冲突
在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。
这个 XML 文档携带着某个表格中的信息:
1 <table> 2 <tr> 3 <td>Apples</td> 4 <td>Bananas</td> 5 </tr> 6 </table>
这个 XML 文档携带有关桌子的信息(一件家具):
1 <table> 2 <name>African Coffee Table</name> 3 <width>80</width> 4 <length>120</length> 5 </table>
假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的 <table> 元素,就会发生命名冲突。 XML 解析器无法确定如何处理这类冲突。
2. 使用前缀来避免命名冲突
此文档带有某个表格中的信息:
1 <h:table> 2 <h:tr> 3 <h:td>Apples</h:td> 4 <h:td>Bananas</h:td> 5 </h:tr> 6 </h:table>
此 XML 文档携带着有关一件家具的信息:
1 <f:table> 2 <f:name>African Coffee Table</f:name> 3 <f:width>80</f:width> 4 <f:length>120</f:length> 5 </f:table>
现在,命名冲突不存在了,这是由于两个文档都使用了不同的名称来命名它们的 <table> 元素 (<h:table> 和 <f:table>)。
通过使用前缀,我们创建了两种不同类型的 <table> 元素。
3. 使用命名空间(Namespaces)
这个 XML 文档携带着某个表格中的信息:
1 <h:table xmlns:h="http://www.w3.org/TR/html4/"> 2 <h:tr> 3 <h:td>Apples</h:td> 4 <h:td>Bananas</h:td> 5 </h:tr> 6 </h:table>
此 XML 文档携带着有关一件家具的信息:
1 <f:table xmlns:f="http://www.w3school.com.cn/furniture"> 2 <f:name>African Coffee Table</f:name> 3 <f:width>80</f:width> 4 <f:length>120</f:length> 5 </f:table>
与仅仅使用前缀不同,我们为 <table> 标签添加了一个 xmlns 属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称。
4. XML Namespace (xmlns) 属性
XML 命名空间属性被放置于元素的开始标签之中,并使用以下的语法:
xmlns:namespace-prefix="namespaceURI"
当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。
注释:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。
5. 统一资源标识符(Uniform Resource Identifier (URI))
统一资源标识符是一串可以标识因特网资源的字符。最常用的 URI 是用来标示因特网域名地址的统一资源定位器(URL)。另一个不那么常用的 URI 是统一资源命名(URN)。在我们的例子中,我们仅使用 URL。
6. 默认的命名空间(Default Namespaces)
为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。
请使用下面的语法:
1 xmlns="namespaceURI"
这个 XML 文档携带着某个表格中的信息:
1 <table xmlns="http://www.w3.org/TR/html4/"> 2 <tr> 3 <td>Apples</td> 4 <td>Bananas</td> 5 </tr> 6 </table>
此 XML 文档携带着有关一件家具的信息:
1 <table xmlns="http://www.w3school.com.cn/furniture"> 2 <name>African Coffee Table</name> 3 <width>80</width> 4 <length>120</length> 5 </table>
【参考资料】
1.Xml教程 http://www.w3school.com.cn/xml/index.asp
【后面的话】
知识总是在学习过程中发现欠缺别的知识,然后好好补充别的知识,这样就会建立知识库,加油吧,少年。
——TT