一、XML简介
XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据。XML文档以.xml为后缀。需要彻底注意的是XML是区分大小写的。
先从一个简单的XML例子来了解下xml基础:
<?xml version="1.0" encoding="utf-8" ?> <books ISBN="9787544238212"> title>xml学习笔记</price>30pagecount>300> books>
第一行表明,本XML遵守的版本是1.0,使用的字符编码是UTF-8字符集。
每个XML元素都已一个起始标记开始和一个结束标记结束。比如开始:<title>,结束:</title>。XML元素可以带有属性,属性值要加引号。比如上例中的ISBN就是属性,属性值要加双引号。同时用等号连接。
一个XML文档只能够有一个根节点,如上例中books就是根节点。
以下列出XML的几个要点:
- XML是一种可扩展标记语言;
- XML的标记没有被预定义,用户可以自行定义标记来描述数据;
- XML主要用来描述和存储数据;
- XML具有自我描述性;
- XML是树状结构的文档,是个结构化的文档;
- XML文档是个文本文件;
二、XML语法
- 每个开始标记都必须有结束标记;
- 一个XML文档只能够有一个根元素;
- 所有XML元素必须正确嵌套;
- 属性值必须加引号;
- 一个元素不能有相同的属性;
下面以示例来解释XML常用的术语。
1、标记
标记分为开始标记和结束标记,如<title>就是一个开始标记。</title>就是一个结束标记。开始标记与结束标记之间的内容成为XML元素的内容。如果一个XML元素没有内容,我们称其为空元素。如<title></title>。
2、元素
XML元素是从一个开始标记到它结束标记的一段内容。比如 <title>XML学习笔记</title> 就是一个元素。
3、属性
一个元素可以带有属性,属性写在开始标记里,写在元素名称的后面。比如<books ISBN="9787544238212">,其中ISBN="9787544238212"就是books元素的一个属性。ISBN 是属性的名称,9787544238212 是属性值。一个XML元素不能有相同的XML属性名。
三、XML元素之间的关系
- 子节点;
- 父节点;
- 并列节点(兄弟关系);
下面以一个例子来解释这三种关系。
father>Tom Smith son> John Smith grandson>Hans Smithdaughter>Jane Smith>
在上面的例子中,son元素就是father元素的子节点。father元素就是son元素和daughter元素的父节点。son元素和daughter又称并列节点。
XML元素中可以带有属性作为XML元素的附加信息。
如果属性值中包含双引号,就用单引号包围属性值。如:
如果属性值中包含单引号,就用双引号包围属性值。如:
一个XML元素可以有一个或多个属性,每个属性用空格分开。如:
person name="zhangsan" age="23">
四、XML名称命名规则
XML的名称可以包含英文字母和数字,或者其他字符比如下划线。XML名称不能以数字或者标点符号开头,XML不能以xml开头(或者xml的大小写,因为这是XML相关标准的保留词)。XML名称不能包含空格,虽然XML名称支持下划线(_)、连字符(-)、句号(.)和冒号(:),但XML开头不能使用连字符(-)、句号(.)和冒号(:)。
1、XML实体应用
(1)、在XML标记里除了表示一个标记的开始之外,不允许有小于号<,因为小于号总是被XML解析器解释为一个标记的开始。
如 :
这行代码是错误的,如果一定要在XML元素内容里书写小于号,那么可以使用小于号的实体引用,即:<来替换小于号。
如:
是正确的写法。
(2)在XML里也不能使用&这个字符,因为&被解释为某个实体引用的开始。所以必须使用&的实体引用& 来代替&。
如:
- <person>a & b</person> 是错误的
- <person>a & b</person> 是正确的
下面给出XML5个预定的实体引用
实体引用 | 字符 | 说明 |
< | < | 小于号 |
> | > | 大于号 |
& | & | 和 |
' | ' | 单引号 |
" | " | 双引号 |
当XML解析器解析含有上述实体引用的XML文档时,会将这些实体引用转换成相应的字符。
只有<和&在XML是非法的。另外几个是合法的,可以直接写,只是用实体引用更加清晰而已。
2、XML CDATA区
当需要往XML文档里添加一段内容,而内容里有很多<或者&的时候,将所有<或&转换为实体引用是很麻烦的事情,这时候可以使用CDATA区,在CDATA区里不必使用实体引用,因为XML解析器不会计算CDATA区里的内容。
CDATA区以 <![CDATA[ 开始,以 ]]> 结束
示例如下:
mycode> <![CDATA[ <html> <title></title> <body></body> </html> ]]>