Dom4j
一、概述
1.功能
优秀的Java XML API,用来处理XML数据
2. 搭建Dom4j环境
导入dom4j-1.6.1.jar包
二、使用Dom4j
1.读取XML文件
- 调用SAXreader的read方法获取Document对象
- 调用Document对象的getRootElement方法获取根标签
- 调用Element的getName获取标签名,getText获取标签文本
2.Element的获取方法
子标签相关
element();element(“标签名”); ——>找到第一个符合的子标签
elements();elements(“标签名”); ——>找到符合的所有子标签List
elementIterator(); ——>获取所子标签性Iterator
elementText(“标签名”); ——>获取子标签文本
elementTextTrim(“标签名”); ——>获取去除所有空白的子标签文本
属性相关
- attribute(“属性名”); ——>获取属性
- attributes(); ——>获取所有属性List
- attributeIterator(); ——>获取所有属性Iterator
- attributeValue(“属性名”); ——>获取属性值
三、使用XPath查找节点
1.概述
- 功能:快速定位到XML中的节点
- 导入jaxen-1.1-beta-6.jar包
2.使用
调用Document的方法
- selectNodes(“定位用XPath表达式”,[排序用XPath表达式]) ——>返回List;
- selectSingleNode(“定位用XPath表达式”) ——>返回Node;
3.XPath语法
绝对路径查找
- 以”/”开头,”/”代表Document对象
相对路径查找
- 以”.”代表当前节点,”..”代表当前节点的父节点
- 在哪个节点对象上执行XPath,当前节点就是哪个节点
全文搜索
- 以”//”开头,通配前面的任意个节点
属性节点前要加”@”
谓语(附加条件)
- 在节点后附加[谓语]
- 允许写函数调用last()、count(节点)
- 允许比较运算符
- 允许and、or
- 数字代表位置,从1开始
4.构建Document
DocumentHelper静态类[调用DocumentFactory.getInstance()]
- createDocument(Element/空) ——>创建Document对象
- createElement(QName/String) ——>创建Element对象
- createAttribute(Element, QName, String) ——>创建Attribute对象
Element的添加方法[底层用DocumentFactory,双链表树]
- add([int],Element)
- addElement(String).setText(String)
- addAttribute(String,String)
- add(Attribute).setValue(String)
Element的删除方法
- 调用父节点的remove(Node) ——>移除Element或Attribute
- 调用自身的detach() ——>分离Element
5.Document输出为XML文件
XMLWriter
- 创建XMLWriter对象
- 传入一个流对象和输出编码(OutputFormat)
- OutputStream ——>根据OutputFormat转换为BufferedWriter
- FileWriter ——>当本地编码是UTF-8时才不会乱码,否则需要转换流
- 调用XMLWriter的writer(Docuement)方法输出文件
- 调用XMLWriter的close()方法关闭流
OutputFormat——>指定输出编码和文档声明的encoding
OutputFormat静态方法
- createCompactFormat()压缩格式,无多余空白,方便网络传输
- createPrettyPrint()漂亮格式,包含空白,方便查阅
setEncoding(String) ——>设置输出编码