总结:https://www.cnblogs.com/crazylqy/p/4178336.html
DOM4J是dom4j.org出品的一个开源XML解析包。Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
DOM4J下载jar包:https://dom4j.github.io/
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
JAXEN(对XPath的支持):
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
Jaxen是一个Java编写的开源的XPath库。这是适应多种不同的对象模型,包括DOM,XOM,dom4j和JDOM。也可以作为适配器,转换Java字节代码或XML的Java bean为xml,从而使您可以使用XPath查询这些树了。
1.DOM4J主要接口
DOM4J主要接口都在org.dom4j这个包里定义。
-Node为所有的dom4j中XML节点定义了多态行为;
-Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为;
|-Element 定义XML 元素;
|-Document定义了XML文档;
-DocumentType 定义XML DOCTYPE声明;
-Entity定义 XML entity;
-Attribute定义了XML的属性;
-ProcessingInstruction 定义 XML 处理指令;
-CharacterData是一个标识借口,标识基于字符的节点。如CDATA,Comment, Text;
|- CDATA 定义了XML CDATA 区域;
|-Text 定义XML 文本节点;
|- Comment 定义了XML注释的行为;
构建xml文档:
1.使用DocumentHelper得到Document实例
Document document = DocumentHelper.createDocument();
2.创建Processing Instruction
document.addProcessingInstruction("xml-stylesheet", inMap);
3.创建元素Element
Element studentsElement = document.addElement("students");
4.为元素添加注释Comment
studentsElement.addComment("An Student Catalog");
5.为元素添加属性
studentsElement.addComment("An Student Catalog");
6.为元素添加文本值Text
ageElement.setText("18");
方法generateDocumentByString()通过字符串转换直接构建xml文档,使用DocumentHelper.parseText()来实现.
document = DocumentHelper.parseText(text);
方法saveDocument(Document document, File outputXml)将文档输出到文件保存,可指定字符编码,可指定格式化输出。
1.使用File定位文件资源,并基于此获得Document实例
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(inputXml);
2.Document实例的selectNodes方法可以传入xpath,并返回一个List实例,基于此使用迭代器,完成特定的应用
List list = document.selectNodes("//students/student/@sn");
3.遍历XML文档
这里提供两种遍历方法,一种是基于迭代的遍历,一种是基于Visitor模式的遍历。这里介绍迭代的