xml基础知识
XML简介
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTMLXML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签
XML语法
所有 XML 元素都须有关闭标签
<p>This is a paragraph</p> <p>This is another paragraph</p>注释:声明不属于XML本身的组成部分。它不是 XML 元素,也不需要关闭标签。
XML 标签对大小写敏感
XML 元素使用 XML 标签进行定义,XML 标签对大小写敏感。比如标签 <Letter> 与标签 <letter> 是不同的。我们必须使用相同的大小写来编写打开标签和关闭标签。
<Message>这是错误的。</message> <message>这是正确的。</message>
XML 必须正确地嵌套
嵌套 即把某个元素放到其他元素的内部。这些新的元素称为子 元素,包含它们的元素称为父 元素。XML 文档可以使用多层嵌套。
一个常见的语法错误是父元素和子元素的错误嵌套。任何子元素都要完全包含在其父元素的开始和结束标记内部。每个同胞(Sibling)元素必须在下一个同胞元素开始之前结束。
<b><i>This text is bold and italic</i></b>
由于 <i> 元素是在 <b> 元素内打开的,那么它必须在 <b> 元素内关闭。
XML 文档必须有根元素
XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。
<root> <child> <subchild>.....</subchild> </child> </root>
XML 的属性值须加引号
<note date=08/08/2008> <to>George</to> <from>John</from> </note>
<note date="08/08/2008"> <to>George</to> <from>John</from> </note>
XML 中的注释
<!-- This is a comment -->
在 XML 中,空格会被保留
HTML 会把多个连续的空格字符裁减(合并)为一个:
HTML: Hello my name is David. 输出: Hello my name is David.
XML声明
XML 文档的第一行可以是一个 XML 声明。这是文件的可选部分,它将文件识别为 XML 文件,有助于工具和人类识别 XML。可以有三种形式:
简单声明 :
<?xml?>
包含XML版本的声明:
<?xml version="1.0"?>
包含字符编码的声明,示例给出的是unicode编码:
<?xml version="1.0" encoding="utf-8"?>
因为这个声明必须出现在文件的开头,所以如果打算将多个小的 XML 文件合并为一个大 XML 文件,则可以忽略这个可选信息。
XML 元素
XML 元素指的是从开始标签直到结束标签的部分。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性,见如下示例:
<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> 只有文本内容,因为它仅包含文本。
XML 命名规则
XML 元素必须遵循以下命名规则:
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格
XML属性
XML 元素可以在开始标签中包含属性,属性 (Attribute) 提供关于元素的额外(附加)信息。属性由一个名称-值对构成,值包含在双引号中(");元素的开始标记内部输入一个或多个属性,如果要添加多个属性,各个属性之间使用空格分开。
备注:属性值必须被引号包围,不过单引号和双引号均可使用。
<person sex="female">
或者这样也可以:
<person sex='female'>
避免 XML 属性
因使用属性而引起的一些问题:
- 属性无法包含多重的值(元素可以)
- 属性无法描述树结构(元素可以)
- 属性不易扩展(为未来的变化)
- 属性难以阅读和维护
XML树形结构
XML
文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端,看一个例子:
<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>,其树形结构见下图。