XML
1. xml是可扩展的标记语言
2. xml的作用
- 用来保存数据,而且这些数据具有自我描述性
- 它还可以作为项目或者模块的配置文件
- 还可以作为网络传输数据的格式(现在以JSON为主)
3. xml语法
- 文档声明
- 元素(标签)
- xml属性
- xml注释
- 文本区域(CDATA区)
3.1 文档声明
创建一个简单的XML文件,用来描述图书信息
属性
version 是版本号
encoding 是 xml 的文件编码
standalone=”yes/no” 表示这个 xml 文件是否是独立的 xml 文件
1 |
|
在浏览器中可以查看到文档:
3.2 xml注释
html和xml的注释相同
3.3 元素(标签)
3.3.1 什么是xml元素?
元素是指从开始标签到结束标签的内容
3.3.2 xml命名规则
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能包含空格
3.3.3 xml中的元素(标签)也分为单标签和双标签
单标签
格式: <标签名 属性=”值” 属性=”值” …… />
双标签
格式:< 标签名 属性=”值” 属性=”值” ……>文本数据或子标签
3.3.4 xml属性
xml的标签属性和html的标签属性是非常类似的,属性可以提供元素的额外信息
在标签上可以书写属性:
一个标签上可以书写多个属性。每个属性的值必须使用 引号 引起来。
3.3.5 语法规则
所有 XML 元素都须有关闭标签(也就是闭合)
XML 标签对大小写敏感
XML 必须正确地嵌套
XML 文档必须有根元素
- 根元素就是顶级元素
- 没有父标签的元素,叫顶级元素
- 根元素是没有父标签的顶级元素,而且必须是唯一一个才行
XML 的属性值须加引号
XML 中的特殊字符
文本区域(CDATA 区)
CDATA语法可以告诉xml解析器,我CDATA里的文本内容,只是纯文本,不需要xml语法解析。
CDATA格式:
<! [CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml]]>
4. xml解析技术
xml 可扩展的标记语言。 不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来解析。
document对象表示的是整个文档(可以是html文档,也可以是xml文档)
早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax 简介(已经过时,但我们需要知道这两种技术)
dom 解析技术是 W3C 组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。 Java 对 dom 技术解析标记也做了实现
sun 公司在 JDK5 版本对 dom 解析技术进行升级:SAX( Simple API for XML ) SAX 解析,它跟 W3C 制定的解析不太一样。它是以类似事件机制通过回调告诉用户当前正在解析的内容。 它是一行一行的读取 xml 文件进行解析的。不会创建大量的 dom 对象。 所以它在解析 xml 的时候,在内存的使用上。和性能上。都优于 Dom 解析
第三方的解析:
jdom 在 dom 基础上进行了封装 、
dom4j 又对 jdom 进行了封装。
pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件。
这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml 文件
5. dom4j解析技术
首先需要导入jar包
5.1 dom4j编程步骤
- 先加载xml文件创建Document对象
- 通过Document对象拿到根元素对象
- 通过根元素.elements(标签名);可以返回一个集合,在这个集合里放着所有指定的标签名的对象
- 找到你想要修改,删除的子元素,进行相应的操作
- 保存到硬盘上
5.2示例
需要解析的books.xml文件内容
1 |
|
解析获取 Document 对象的代码
第一步,先创建 SaxReader 对象。这个对象,用于读取 xml 文件,并创建 Document
需要分四步操作:
- 通过创建SAXReader对象,来读取xml文件,获取Document对象
- 通过Document对象,拿到xml的根元素对象
- 通过根元素对象,获取所有的book标签对象
- 遍历每个book标签对象,然后获取到book标签对象内的每一个元素,再通过getText()方法拿到其实标签和结束标签之间的内容。
1 | /** |
控制台打印的内容: