杰瑞科技汇

如何用dom4j生成XML?

使用DOM4J生成XML文档

DOM4J是一个优秀的Java XML API,具有性能优异、功能强大和易于使用的特点,下面我将介绍如何使用DOM4J生成XML文档。

如何用dom4j生成XML?-图1
(图片来源网络,侵删)

添加依赖

确保你的项目中包含DOM4J的依赖,如果你使用Maven,可以在pom.xml中添加:

<dependency>
    <groupId>org.dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>2.1.4</version>
</dependency>

基本步骤

使用DOM4J生成XML文档的基本步骤如下:

  1. 创建Document对象
  2. 创建根元素
  3. 添加子元素和属性
  4. Document对象写入文件或输出流

示例代码

1 简单XML生成示例

import org.dom4j.*;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.FileWriter;
import java.io.IOException;
public class Dom4jXmlGenerator {
    public static void main(String[] args) {
        // 1. 创建Document对象
        Document document = DocumentHelper.createDocument();
        // 2. 创建根元素
        Element root = document.addElement("students");
        // 3. 添加子元素和属性
        Element student1 = root.addElement("student")
                .addAttribute("id", "001")
                .addAttribute("gender", "male");
        student1.addElement("name").addText("张三");
        student1.addElement("age").addText("20");
        student1.addElement("class").addText("计算机科学1班");
        Element student2 = root.addElement("student")
                .addAttribute("id", "002")
                .addAttribute("gender", "female");
        student2.addElement("name").addText("李四");
        student2.addElement("age").addText("19");
        student2.addElement("class").addText("软件工程2班");
        // 4. 设置输出格式
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("UTF-8");
        // 5. 写入文件
        try (FileWriter writer = new FileWriter("students.xml")) {
            XMLWriter xmlWriter = new XMLWriter(writer, format);
            xmlWriter.write(document);
            xmlWriter.close();
            System.out.println("XML文件生成成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2 生成的XML内容

上述代码将生成如下XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<students>
  <student id="001" gender="male">
    <name>张三</name>
    <age>20</age>
    <class>计算机科学1班</class>
  </student>
  <student id="002" gender="female">
    <name>李四</name>
    <age>19</age>
    <class>软件工程2班</class>
  </student>
</students>

高级用法

1 添加CDATA部分

Element note = root.addElement("note");
note.addCDATA("这是一些包含特殊字符的内容:<>&\"'");

2 添加命名空间

Document document = DocumentHelper.createDocument();
Element root = document.addElement("root", "http://example.com/namespace");

3 使用XPath

// 添加元素
Element student = (Element) DocumentHelper.parseText("<student/>").getRootElement();
root.add(student);
// 查询元素
List<Node> nodes = document.selectNodes("//student[@gender='male']");

4 处理特殊字符

DOM4J会自动处理XML特殊字符的转义,如果你需要保留原始字符,可以使用CDATA部分。

如何用dom4j生成XML?-图2
(图片来源网络,侵删)

输出控制

DOM4J提供了多种输出控制方式:

// 紧凑格式(无缩进)
OutputFormat compactFormat = OutputFormat.createCompactFormat();
XMLWriter compactWriter = new XMLWriter(System.out, compactFormat);
compactWriter.write(document);
// 自定义格式
OutputFormat customFormat = new OutputFormat();
customFormat.setIndentSize(4);
customFormat.setNewlines(true);
customFormat.setTrimText(true);

异常处理

在实际应用中,应该添加适当的异常处理:

try {
    // XML生成代码
} catch (DocumentException e) {
    System.err.println("XML解析错误: " + e.getMessage());
} catch (IOException e) {
    System.err.println("IO错误: " + e.getMessage());
}

DOM4J提供了丰富的API来处理XML文档,以上只是基本用法,你可以根据需要探索更多高级功能。

如何用dom4j生成XML?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇