xml的解析简介
xml的解析方式(技术):dom 和 sax
dom解析和sax解析区别:
-
dom方式解析
- 根据xml的层级结构在内存中分配一个树形结构,
- 把xml的标签,属性和文本都封装成对象
- 缺点:如果文件过大,造成内存溢出
- 优点:很方便实现增删改操作
-
sax方式解析
- 采用事件驱动,边读边解析
- 从上到下,一行一行的解析,解析到某一个对象,返回对象名称
- 缺点:不能实现增删改操作
- 优点:如果文件过大,不会造成内存溢出,方便实现查询操作
想要解析xml,首先需要解析器
不同的公司和组织提供了 针对dom和sax方式的解析器,通过api方式提供
- sun公司提供了针对dom和sax解析器 jaxp
- dom4j组织,针对dom和sax解析器 dom4j (最多使用)
- jdom组织,针对dom和sax解析器 jdom (基本没人用)
dom4j解析器
dom4j解析器结合了DOM和SAX方法
dom4j,是一个组织,针对xml解析,提供解析器 dom4j
dom4j不是javase的一部分,想要使用第一步需要怎么做?
*** 导入dom4j提供jar包
-- 创建一个文件夹 lib
-- 复制jar包到lib下面,
-- 右键点击jar包,build path -- add to build path
-- 看到jar包,变成奶瓶样子,表示导入成功
* 得到document
SAXReader reader = new SAXReader();
Document document = reader.read(url);
* document的父接口是Node
* 如果在document里面找不到想要的方法,到Node里面去找
* document里面的方法 getRootElement() :获取根节点 返回的是Element
* Element也是一个接口,父接口是Node
- Element和Node里面方法
** getParent():获取父节点
** addElement:添加标签
* element(qname)
** 表示获取标签下面的第一个子标签
** qname:标签的名称
* elements(qname)
** 获取标签下面是这个名称的所有子标签(一层)
** qname:标签名称
* elements()
** 获取标签下面的所有一层子标签
dom4j操作
查询
添加
修改
删除
xpath
迅速定位到某个元素。
* 可以直接获取到某个元素 ,最常用的六种形式
* 第一种形式
/AAA/DDD/BBB: 表示一层一层的,AAA下面 DDD下面的BBB
* 第二种形式
//BBB: 表示和这个名称相同,表示只要名称是BBB,都得到
* 第三种形式
/*: 所有元素
* 第四种形式
** BBB[1]: 表示第一个BBB元素
×× BBB[last()]:表示最后一个BBB元素
* 第五种形式
** //BBB[@id]: 表示只要BBB元素上面有id属性,都得到
* 第六种形式
** //BBB[@id='b1'] 表示元素名称是BBB,在BBB上面有id属性,并且id的属性值是b1