XML 简介
XML 是 Extensible Markup Language 的缩写,即可扩展标记语言,是一种标记语言,也是一种简单的数据存储语言,XML 使用一系列简单的标记来描述结构化数据。
1、XML 简介
1.1、XML 概述
XML 是 Extensible Markup Language 的缩写,即可扩展标记语言,是一种标记语言,也是一种简单的数据存储语言,XML 使用一系列简单的标记来描述结构化数据。
XML 与 HTML 同样作为用于创建结构化文档的标记语言,与 HTML 的不同是:
- HTML 的主要目的是呈现内容。它是用于在 Web 上显示文档的语言,它使用标记来定义文本、图像和其他媒体的布局和样式。HTML 的重点是展示和呈现数据,使其在 Web 页面中易于阅读和理解;
- XML 的主要目的是存储和传输数据。它是一种通用的标记语言,可用于定义自定义标记集,以便在不同的应用程序之间共享数据。XML 被广泛用于 Web 服务、配置文件和数据交换,以及其他需要结构化数据的应用程序。
1.2、XML 结构
XML 文档形成了一种树结构,它从 “根部” 开始,然后扩展到 “枝叶”。
XML 文档必须有且仅有一个根元素。该元素是所有其他元素的父元素。
XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。
所有元素均可拥有子元素:
代码语言:javascript复制<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。
所有元素均可拥有文本内容和属性(类似 HTML 中)。
1.3、XML 用途
XML 应用于 web 开发的许多方面,常用于简化数据的存储和共享。
XML 应用场景主要体现在以下几点:
- 数据存储:XML 与文件,数据可一样,都可以实现数据的持久化存储。XML 及其简单,正是这点使 XML 与众不同;
- 数据交换:在实际运用中,由于各种计算机所使用的操作系统,数据库不同,因此数据之间的交换很复杂。现在可以使用 XML 来交换数据,如可以将数据库 A 中的数据转换成标准的 XML 文件,然后数据库 B 再将标准的 XML 文件转换成合适自己的数据要求的数据,以达到交换数据的目的;
- 数据配置:许多应用都将配置信息存储在 XML 文件中。
2、XML 语法
2.1、XML 文档声明
XML 声明包含准备 XML 处理程序解析 XML 文档的详细信息。它是可选的,但是在使用时它必须出现在 XML 文档的第一行。
下面是语法展示了 XML 声明:
代码语言:javascript复制<?xml version="version_number" encoding="encoding_declaration" standalone="standalone_status"?>
其中每个参数都由参数名,等号( =
)以及用引号( ""
)包裹的参数值组成。下面的表格展示了上述语法的详细信息:
参数 | 说明 | 参数值 |
---|---|---|
Version | 指定所用 XML 标准的版本 | 1.0、1.1 |
Encoding | 文档使用的编码,默认 UTF-8 | UTF-8, UTF-16, ISO-10646-UCS-4, ISO-8859-1 to ISO-8859-9,... |
Standalone | 通知解析器文档是否以来外部源信息 | yes 、 no |
XML 声明应该遵守以下规则:
- 如果 XML 声明出现在 XML 中,必须把它放在这个 XML 文档的第一行;
- 如果包含 XML 声明,就必须包含版本号属性;
- 参数名和值区分大小写;
- 放置参数的顺序很重要,正确的顺序是:
version
,encoding
和standalone
- 可以使用单引号或双引号;
- XML 声明没有闭合标签,比如
</?xml>
。
2.2、XML 标签
XML 标签是 XML 的基础。它们定义了 XML 中某个元素的范围。它们也可以用来插入注释,声明解析环境需的设置以及插入特定的指令。
大体上可以按照如下方式归类 XML 标签:
开始标签:每个开始的非空 XML 元素都被标记为开始标签。下面是一个开始标签的例子:
代码语言:javascript复制<address>
结束标签:每个有开始标签的元素都应该使用结束标签闭合。下面是一个结束标签的例子:
代码语言:javascript复制</address>
空标签出现在开始标签和结束标签之间的文本被称作内容。没有内容的元素被称为空元素。空元素使用下面两种方式表示:
代码语言:javascript复制<!------- 开始标签后面紧跟一个结束标签 ----->
<hr></hr>
<!------- 真正意义上的空元素标签 ----->
<hr />
以下是使用 XML 标签需要遵循的规则:
- 规则1:XML 标签区分大小写;
- 规则2:XML 标签必须按照适当的顺序闭合,比如,在另一个元素内部开启的 XML 标签必须在外部元素闭合之前闭合。
2.3、XML 元素
XML 元素可以被定义为 XML 的构建块。元素可以表现为承载文本,元素,属性,媒体对象或这有这些的容器。
每个 XML 文档都包含一个或多个元素,其范围由开始和结束标签界定,或者用一个空元素标签表示空元素。
下面是编写一个 XML 元素的语法:
代码语言:javascript复制<element-name attribute1 attribute2>
....content
</element-name>
element-name
: 表示元素的名称。开始和结束标签之间的_名称_必须匹配。attribute1
attribute2
: 就是由空格分隔的元素属性。
XML 元素需要遵循以下规则:
- 元素_名称可以包含任意字母数字字符。在名称中唯一允许使用的标签符号是连字符(
-
),下划线(_
)和句点(.
); - 元素名称区分大小写。例如,Address,address 和 ADDRESS 是不同的元素名;
- 元素的开始和结束标签必须相同;
- 一个元素就是一个容器,它可以包含文本或者元素,正如上面的例子中可以看到。
2.4、XML 属性
属性(attribute)定义了元素的属性(property)。它关联一个名称和字符串值。属性被写作如下形式:
代码语言:javascript复制name = "value"
属性名称后紧跟一个等号( =
)号以及使用双引号( ""
)或者单引号( ''
)包裹的字符串值。
属性被用来给元素添加一个唯一标签,分类标签,添加布尔值属性或者关联一些字符串数据。
属性被用来区分同名元素。当我们不希望为每种情况都创建一个新元素时。我们可以使用属性添加更多的细节以区分两个或多个类似的元素。
以下是定义属性需要遵循的规则:
- 同一起始标签或者空元素标签中属性名只能出现一次;
- 属性必须使用属性属性列表声明(Attribute-List Declaration)定义在文档类型定义(DTD)中;
- 属性值中不能直接或者间接引用包含外部实体;
- 属性值中被直接或间接提及的任何实体的替代文本都不能包含小于号(
<
)。
2.5、XML 引用
引用 通常允许我们在 XML 文档中添加或包含附加的文本。引用始终以符号( &
)开始,这是一个保留字符,以符号 ;
结尾。XML 中有两种类型的引用:
- 实体引用: 一个实体引用的起始和结束定界符之间包含一个名称。比如
&
,其中amp
就是名称。这个 name 通常指向一个预定义的文本字符串或标记。 - 字符引用: 这些包含引用比如
A
包含一个 hash 标记(#
),后面紧跟一个数字。这个数字始终指向一个字符的 Unicode 码。在这里,65 指向字母 “A”。
XML 文本:
- XML 元素和 XML 属性的名称区分大小写。这意味着元素的开始和结束标签大小写必须一致;
- 为了避免字符编码的问题,所有的 XML 文件都应该保存为 Unicode UTF-8 或者 UTF-16 文件;
- 空白字符,比如空格,制表符以及 XML 元素和 XML 属性之间换行符会被忽略;
- 有些字符是 XML 语法本身保留的。因此,不能直接使用它们。要使用它们,就要使用一些替代实体。下面列出了一些:
字符 | 替代实体 | 字符描述 |
---|---|---|
< | 小于号 | |
> | > | 大于号 |
& | & | 和号 |
' | ' | 撇号 |
" | " | 双引号 |