一.XML 简介
什么是 xml?
xml 是可扩展的标记性语言
xml 的主要作用有:
1、用来保存数据,而且这些数据具有自我描述性
2、它还可以做为项目或者模块的配置文件
3、还可以做为网络传输数据的格式(现在 JSON 为主)
二、xml语法
1、文档声明
<?xml version="1.0" encoding="UTF-8"?> <!--xml声明—>
2、xml注释
html 和 XML 注释 一样 : <!-- -->
3、xml元素
xml元素指的是从开始标签到结束标签的部分(包括标签)
元素可包含其他元素,文本或者两者的混合物
例如
4、xml属性
xml 的标签属性和 html 的标签属性是非常类似的,属性可以提供元素的额外信息
在标签上可以书写属性: 一个标签上可以书写多个属性。每个属性的值必须使用 引号 引起来。
5、xml语法规则
1)所有 XML 元素都须有关闭标签(也就是闭合)
2)XML对大小写敏感
3)XML 必须正确地嵌套
4)XML 文档必须有根元素
5)XML 的属性值须加引号
6)XML 中的特殊字符
> 特殊字符 : >
< 特殊字符 : <
7)文本区域 (CDATA区域)
CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法
CDATA 格式:
<![CDATA[ 这里输入的字符会原样显示,不会解析xml ]]
三、XML解析技术
xml 可扩展的标记语言。 不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术
1、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 文件。
2、使用dom4j解析xml
1)引入第三方类库
2)解析代码demo
@Test public void test1() throws DocumentException { // 1、创建一个SaxReader输入流,来读取xml配置文件,生成document对象 SAXReader reader = new SAXReader(); Document document = reader.read("src/books.xml"); // 2、通过Document获取根元素 Element root = document.getRootElement(); // 3、通过根元素获取book标签对象 List<Element> books= root.elements("book"); // 4、遍历 处理每个book标签转换为book类 for (Element book : books) { //asXML是将标签对象转化为标签字符串 Element name = book.element("name"); // getText()获取标签中的文本内筒 String nameText = name.getText(); //获取属性的值 String sn = book.attributeValue("sn"); } }