当前位置:实例文章 » JAVA Web实例» [文章]如何使用Dom4J解析XML文档

如何使用Dom4J解析XML文档

发布人:shili8 发布时间:2025-01-10 04:03 阅读次数:0

**使用 Dom4j 解析 XML 文档**

Dom4j 是一个 Java 库,用于解析、创建和操作 XML 文档。它提供了一个简单易用的 API,使得开发者能够轻松地处理 XML 数据。

在本文中,我们将介绍如何使用 Dom4j 解析 XML 文档的基本步骤和示例代码。

###1. 添加依赖首先,需要在项目中添加 Dom4j 的依赖。Dom4j 有两个版本:Dom4j1.x 和 Dom4j2.x。如果你使用的是 Maven 或 Gradle 等构建工具,可以直接在 pom.xml 或 build.gradle 文件中添加以下依赖:

xml<dependency>
 <groupId>dom4j</groupId>
 <artifactId>dom4j</artifactId>
 <version>1.6.1</version>
</dependency>


或者,如果你使用的是 Gradle,可以这样写:

groovydependencies {
 implementation 'dom4j:dom4j:1.6.1'
}


###2. 解析 XML 文档解析 XML 文档的步骤如下:

* 创建一个 `Document` 对象,用于存储 XML 文档。
* 使用 `XMLReader` 类读取 XML 文件或字符串。
* 将读取的内容转换为 `Document` 对象。

示例代码如下:

javaimport org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dom4jExample {
 public static void main(String[] args) throws Exception {
 // 创建一个 Document 对象 Document document = DocumentHelper.createDocument();

 // 使用 XMLReader读取 XML 文件 SAXReader reader = new SAXReader();
 Document xmlDocument = reader.read(new File("example.xml"));

 // 将读取的内容转换为 Document 对象 Element rootElement = xmlDocument.getRootElement();

 // 获取根元素的名称和属性 String name = rootElement.getName();
 Map attributes = rootElement.attributes();

 System.out.println("Root element name: " + name);
 System.out.println("Attributes:");
 for (Map.Entry entry : attributes.entrySet()) {
 System.out.println(entry.getKey() + ": " + entry.getValue());
 }

 // 获取子元素 List childElements = rootElement.elements();
 System.out.println("Child elements:");
 for (Element element : childElements) {
 System.out.println(element.getName());
 }
 }
}


###3. 创建 XML 文档创建 XML 文档的步骤如下:

* 使用 `DocumentHelper` 类创建一个新的 `Document` 对象。
* 使用 `Element` 类添加元素和属性。

示例代码如下:

javaimport org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;

public class Dom4jExample {
 public static void main(String[] args) throws Exception {
 // 创建一个 Document 对象 Document document = DocumentHelper.createDocument();

 // 添加根元素 Element rootElement = document.addElement("root");

 // 添加子元素 Element childElement1 = rootElement.addElement("child");
 childElement1.addAttribute("name", "John");
 childElement1.addAttribute("age", "30");

 Element childElement2 = rootElement.addElement("child");
 childElement2.addAttribute("name", "Alice");
 childElement2.addAttribute("age", "25");

 // 将 Document 对象写入 XML 文件 XMLWriter writer = new XMLWriter(System.out);
 writer.write(document);

 System.out.println();
 }
}


###4. 使用 XPath 表达式使用 XPath 表达式可以快速定位和获取 XML 文档中的元素。

示例代码如下:

javaimport org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.XPath;

public class Dom4jExample {
 public static void main(String[] args) throws Exception {
 // 创建一个 Document 对象 Document document = DocumentHelper.createDocument();

 // 添加根元素 Element rootElement = document.addElement("root");

 // 添加子元素 Element childElement1 = rootElement.addElement("child");
 childElement1.addAttribute("name", "John");
 childElement1.addAttribute("age", "30");

 Element childElement2 = rootElement.addElement("child");
 childElement2.addAttribute("name", "Alice");
 childElement2.addAttribute("age", "25");

 // 使用 XPath 表达式获取元素 String xpathExpression = "/root/child[@name='John']";
 XPath xpath = new XPath(xpathExpression);
 Element element = (Element) xpath.selectSingleNode(document);

 System.out.println(element.getName());
 }
}


###5. 使用 XSLT 样式表使用 XSLT 样式表可以将 XML 文档转换为其他格式的文档。

示例代码如下:

javaimport org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dom4jExample {
 public static void main(String[] args) throws Exception {
 // 创建一个 Document 对象 Document document = DocumentHelper.createDocument();

 // 添加根元素 Element rootElement = document.addElement("root");

 // 添加子元素 Element childElement1 = rootElement.addElement("child");
 childElement1.addAttribute("name", "John");
 childElement1.addAttribute("age", "30");

 Element childElement2 = rootElement.addElement("child");
 childElement2.addAttribute("name", "Alice");
 childElement2.addAttribute("age", "25");

 // 使用 XSLT 样式表转换 XML 文档 String xsltString = "<xsl:stylesheet version='1.0' xmlns:xsl=' match='/root'><html><body><h1>Children:</h1><ul><xsl:for-each select='child'><li><xsl:value-of select='@name'/></li></xsl:for-each></ul></body></html></xsl:template></xsl:stylesheet>";
 String xsltDocument = new String(xsltString.getBytes("ISO-8859-1"), "UTF-8");

 // 将 XSLT 样式表应用于 XML 文档 SAXReader reader = new SAXReader();
 Document xsltDocument = reader.read(new StringReader(xsltDocument));
 Element xsltRootElement = (Element) xsltDocument.selectSingleNode("/xsl:stylesheet");
 Element xmlRootElement = document.getRootElement();

 // 将 XSLT 样式表应用于 XML 文档 Transformer transformer = TransformerFactory.newInstance().newTransformer();
 transformer.transform(new DOMSource(document), new StreamResult(System.out));
 }
}


###6. 使用 XSLT 样式表的其他方法使用 XSLT 样式表还有其他方法,可以将 XML 文档转换为其他格式的文档。

示例代码如下:

javaimport org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dom4jExample {
 public static void main(String[] args) throws Exception {
 // 创建一个 Document 对象 Document document = DocumentHelper.createDocument();

 // 添加根元素 Element rootElement = document.addElement("root");

 // 添加子元素 Element childElement1 = rootElement.addElement("child");
 childElement1.addAttribute("name", "John");
 childElement1.addAttribute("age", "30");

 Element childElement2 = rootElement.addElement("child");
 childElement2.addAttribute("name", "Alice");
 childElement2.addAttribute("age", "25");

 // 使用 XSLT 样式表转换 XML 文档 String xsltString = "<xsl:stylesheet version='1.0' xmlns:xsl=' match='/root'><html><body><h1>Children:</h1><ul><xsl:for-each select='child'><li><xsl:value-of select='@name'/></li></xsl:for-each></ul></body></html></xsl:template></xsl:stylesheet>";
 String xsltDocument = new String(xsltString.getBytes("ISO-8859-1"), "UTF-8");

 // 将 XSLT 样式表应用于 XML 文档 SAXReader reader = new SAXReader();
 Document xsltDocument = reader.read(new StringReader(xsltDocument));
 Element xsltRootElement = (Element) xsltDocument.selectSingleNode("/xsl:stylesheet");
 Element xmlRootElement = document.getRootElement();

 // 将 XSLT 样式表应用于 XML 文档 Transformer transformer = TransformerFactory.newInstance().newTransformer();
 transformer.transform(new DOMSource(document), new StreamResult(System.out));

 // 使用 XSLT 样式表转换 XML 文档 String xsltString2 = "<xsl:stylesheet version='1.0' xmlns:xsl='

其他信息

其他资源

Top