XML语言即是可扩展标记语言,可以对文档和数据进行结构化处理,它被设计用来传输和存储数据
XML语法
一个XML文件分为如下几个部分:文档声明、元素、属性、注释、CDATA区、特殊字符、处理指令。
文档声明
一般放在文档的第一行,说明XML文档的类型和字符编码格式
<?xml version="1.0" encoding="utf-8"?>
元素
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。一个元素可以包含其他元素、文本、属性等,一般一个XML文件包含一个根标签,其他标签都是这个根标签的子标签。
- 一个标签中可以嵌套多个子标签,但所有标签必须合理嵌套,不允许交叉嵌套;
XML标签中出现的空格和换行都会被当做标签的内容进行处理;
XML元素可以包含字母数字和一些可见字符,但是名称不能以数字或者标点符号开始、名称不能以字母 xml(或者 XML、Xml 等等)开始、名称不能包含空格;
XML是大小写敏感的;
XML中的标签总是成对出现的,结束标签不能省略;
如果没有结束标签,元素必须以/结尾;
属性
XML元素具有属性,类似 HTML。属性(Attribute)提供有关元素的额外信息。一个标签可以有多个属性,每个属性都有自己的名称和取值;例如
<applet code = 'hellloWorld.class' width = '300' height = '100'>
属性必须用单引号和双引号括起来;
所有属性必须有属性值;
标签属性所代表的信息,其实可以用子元素的形式来描述;
<applet>
<code>hellloWorld.class</cede>
<width>300</width>
<height>100</height>
</applet>
注释
XML 中编写注释以 < !–注释– > 格式,注释中不能包含字符串–。
CDATA区
CDATA区的内容不会而被解析引擎解析,而是被当做原始内容处理,一般被放在 < ![CDATA[内容]] > 中,内容中可以包含<、>、&之类的特殊字符。
特殊字符
字符引用:可以使用&#的十进制或&#x的十六进制形式;
实体引用:对一些特殊字符,如果要显示其原始样式,需要使用&name的形式,也可以在DTD中定义其他实体引用
特殊字符 | 替代字符 |
---|---|
& | & |
< | < |
> | > |
“ | " |
‘ | &apos |
处理指令
处理指令(processing instruction,PI)用来告诉解析引擎如何解析XML文档内容,以
<?xml-stylesheet type = "text/css" herf = "1.css">
XML约束
用来约束XML文件结构的文档,有文档类型定义(Document Type Definition,DTD)和XML Schema两种方式,它们都包含了用于解释文档应如何构成的规则,这些规则指定了每个元素的合法子元素和属性。
DTD
文件使用
DTD既可以在XML文件内编写,也可以从外部引用。
- 在XML文件内编写格式为:
<!DOCTYPE 根元素 [元素声明]>
文档类型必须匹配根元素的名字,例子如下:
<!DOCTYPE configuration [
<!ELEMENT configuration...>
more rules
...
]>
<configuration>
...
</configuration>
- 外部引用:当引用的文档在本地时,可以使用SYSTEM声明来进行引用,格式为:
<!DOCTYPE 根元素 SYSTEM "文件名">
例如:
<!DOCTYPE configrition SYSTEM "config.dtd">
解析XML文件
要处理XML文件必须先解析它,解析一个XML的过程是,先读入一个文件,确认文件具有正确的格式,然后将其分解为各个元素,JAVA提供了两种XML文件解析器:文档对象模型解析器和流机制解析器;
文档对象模型解析器
文档对象模型解析器(DOM)将读入的XML转换成树结构,当需要处理很长的文档时,用它生成树结构将耗费大量的内存,如果程序只关心文档中的某些元素而不关心上下文,可以考虑使用流机制解析器。