1.1 xml简介
- a) xml,eXtensible Markup Language,可扩展标记语言.是一种标记语言.
- b) xml 是一种非常灵活的语言,没有固定的标签,所有的标签都可以自定义.
- c) 通常,xml 被用于信息的记录和传递. 因此,xml 经常被用于充当配置文件.
1.2 格式良好的xml
- a) 声明信息,用于描述 xml 的版本和编码方式 <?xml version="1.0" encoding="UTF-8"?>
- b) xml 有且仅有一个根元素
- c) xml 是大小写敏感的
- d) 标签是成对的,而且要正确嵌套
- e) 属性值要使用双引号
例如:
@H_404_34@<?xml version="1.0" encoding="UTF-8"@H_404_34@?> <!-- 这里是注释 --> @H_404_34@<books@H_404_34@> @H_404_34@<book id@H_404_34@="b01"@H_404_34@> @H_404_34@<name@H_404_34@>java高级编程@H_404_34@</name@H_404_34@> @H_404_34@<author@H_404_34@>张三@H_404_34@</author@H_404_34@> @H_404_34@<price@H_404_34@>50.5@H_404_34@</price@H_404_34@> @H_404_34@</book@H_404_34@> @H_404_34@<book id@H_404_34@="b02"@H_404_34@> @H_404_34@<name@H_404_34@>java中级编程@H_404_34@</name@H_404_34@> @H_404_34@<author@H_404_34@>李四@H_404_34@</author@H_404_34@> @H_404_34@<price@H_404_34@>30.5@H_404_34@</price@H_404_34@> @H_404_34@</book@H_404_34@> @H_404_34@</books@H_404_34@>
2. DTD
2.1 DTD简介
a) DTD,Document Type Definition,文档类型定义
b) DTD 用于约束 xml 的文档格式,保证 xml 是一个有效的xml.
c) DTD 可以分为两种,内部 DTD,外部 DTD
2.2 使用DTD 2.2.1 内部 DTD 的定义
a)语法如下:
<!DOCTYPE 根元素 [元素声明]> b) 元素声明语法:
<!ELEMENT 元素名 (子元素[,子元素...])> c) 数量词
> +: 表示出现 1 次或多次,至少一次
> ?: 表示出现 0 次或 1 次
> *: 表示出现任意次
d) 属性声明语法:
> 属性类型: CDATA,表示字符数据(character data)
> 默认值:
- #required,表示必须出现
- #IMPLIED,表示不是必须的
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
e) 带 DTD 的完整 xml 代码:
@H_404_34@<?xml version="1.0" encoding="UTF-8"@H_404_34@?> @H_404_34@<!DOCTYPE scores [ <!ELEMENT scores (student+)@H_404_34@> @H_404_34@<!ELEMENT student (name,course,score)@H_404_34@> @H_404_34@<!ATTLIST student id CDATA #required@H_404_34@> @H_404_34@<!ELEMENT name (#PCDATA)@H_404_34@> @H_404_34@<!ELEMENT course (#PCDATA)@H_404_34@> @H_404_34@<!ELEMENT score (#PCDATA)@H_404_34@> ]> @H_404_34@<scores@H_404_34@> @H_404_34@<student id@H_404_34@="1"@H_404_34@> @H_404_34@<name@H_404_34@>王同@H_404_34@</name@H_404_34@> @H_404_34@<course@H_404_34@>java@H_404_34@</course@H_404_34@> @H_404_34@<score@H_404_34@>89@H_404_34@</score@H_404_34@> @H_404_34@</student@H_404_34@> @H_404_34@<student id@H_404_34@="2"@H_404_34@> @H_404_34@<name@H_404_34@>李佳@H_404_34@</name@H_404_34@> @H_404_34@<course@H_404_34@>sql@H_404_34@</course@H_404_34@> @H_404_34@<score@H_404_34@>58@H_404_34@</score@H_404_34@> @H_404_34@</student@H_404_34@> @H_404_34@</scores@H_404_34@>
2.2.2 外部DTD的定义
a) 创建一个独立的 dtd 文件
@H_404_34@<?xml version="1.0" encoding="UTF-8"@H_404_34@?> @H_404_34@<!ELEMENT scores (student+)@H_404_34@> @H_404_34@<!ELEMENT student (name,score)@H_404_34@> @H_404_34@<!ATTLIST student id CDATA #required@H_404_34@> @H_404_34@<!ELEMENT name (#PCDATA)@H_404_34@> @H_404_34@<!ELEMENT course (#PCDATA)@H_404_34@> @H_404_34@<!ELEMENT score (#PCDATA)@H_404_34@>
b) 在 xml 中引入外部 DTD 文件
3. XML的解析
对 xml 文件进行操作,包括创建 xml,对 xml 文件进行增删改查操作.
3.1 常见的xml解析技术 3.1.1 DOM解析
是官方提供的解析方式,基于 xml 树解析的
3.1.2 SAX解析
是民间的解析方式,基于事件的解析
3.1.3 JDOM解析
第三方提供,开源免费的解析方式,比 DOM 解析快
3.1.4 DOM4J
第三方提供,开源免费,是 JDOM 的升级版
3.2 DOM4J解析XML
需要导入 dom4j 的 jar 包,解析 xml 的入口,是需要先拿到一个 Document 对象
3.2.1 读取xml文件中的信息