文章目录
4.1 XML简介
4.1.1 什么是 xml?
xml 是可拓展性的标记语言
4.1.2 xml 的作用
xml的主要作用有:
- 用来保存数据,而且这些数据具有自我描述性
- 它还可以作为项目或者模块的配置文件
- 还可以作为网络传输数据的格式(现在 JSON 为主)
4.2 xml 语法
4.2.1 文档文件
需求:创建一个 xml 文件,用来描述图书信息
- 创建一个 xml 文件
文件名:
<?xml version="1.0" encoding="UTF-8"?> xml 声明
xml 声明 ① version 是版本的意思 ② encding 是编码
注:<?xml 要连在一起写
属性:- version 是版本号
- encoding 是 xml 的文件编码
- standalone=“yes/no” 表示这个 xml 文件是否是独立 xml 文件
- 图书有 id 属性,表示唯一标识,书名,有作者价格的信息
在浏览器中可以查看到文档
4.2.2 元素(标签)
html标签:
- 格式:<标签名>封装的数据</标签名>
- 单标签:<标签名/> <br /> 换行 <hr/> 水平线
- 双标签:<标签名>封装的数据<标签名/>
- 标签名大小写不敏感
- 标签有属性,有基本属性和事件属性
- 标签要闭合(不闭合,html中不报错。但是要养成良好的书写习惯)
-
什么是 xml 元素
-
xml 命名规则
xml 必须遵守以下命名规则:
-
名称可以含字母、数字以及其他的字符
例如: <book id="SN12324321"> <!-- 描述一本书 --> <author>班导</author> <!-- 描述书的作者信息 --> <name>java</name> <!-- 书名 --> <price>9.9</price> <!-- 价格 --> </book>
-
名称不能以数字或者标点符号开始
-
名称不能包含空格
-
-
xml 中的元素(标签)也分成单标签和双标签
4.2.3 xml 属性
xml 标签属性和 html 的标签属性是非常相似的,属性可以提供元素的额外信息
在标签上可以书写属性:
一个标签可上可以书写多个属性。每个属性的值必须使用引号引起来
书写的规则和标签的书写规则一样
注:属性必须使用引号引起来,否则报错
4.2.4 xml 注释
html 和 xml 注释一样: <!-- html注释 -->
4.2.5 语法规则
-
所有 xml 元素都必须有关闭标签(也就是闭合)
-
xml 标签对大小写敏感
-
xml 必须正确的嵌套
-
xml 文档必须有根元素
根元素就是顶级元素
没有父标签的元素,叫顶级元素
根元素是没有父标签的顶级元素,而且是唯一一个才行
-
xml 的属性值必须加引号
-
xml 中的特殊字符
-
文本区域(CDATA 区)
CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析 CDATA 格式: <![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml]]>
4.3 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 它是第三方的解析技术,我们需要使用第三方给我们提供好的类库才可以解析文件