Java dom4j生成与解析XML案例详解

Java dom4j生成与解析XML案例详解

什么是dom4j?

dom4j是一个开放源代码的Java XML解析器,它基于Java标准的DOM和XPath接口,并扩展了DOM和XPath库以实现更好的性能和易用性。dom4j能够读取XML文档、遍历XML元素树、编辑XML文档并生成新的XML文档。

dom4j生成XML

dom4j生成XML是指使用dom4j API创建XML文档,可以为文档添加元素、属性和文本节点等。下面是生成XML的步骤:

  1. 加载dom4j库和相关类

```java
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;

//...
```

  1. 创建XML文档对象、根节点

java
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root");

  1. 添加子节点和元素

java
Element child = root.addElement("child");
child.addAttribute("key", "value");
child.setText("Hello, world!");

  1. 输出XML文档

java
XMLWriter writer = new XMLWriter(new FileOutputStream(new File("output.xml")));
writer.write(document);
writer.close();

这段代码生成了一个XML文档,根节点为<root>,包含一个名为<child>的子节点,该子节点拥有一个名为key的属性和一个文本值为Hello, world!的文本节点。输出的XML文档保存在名为output.xml的文件中。

dom4j解析XML

dom4j解析XML是指使用dom4j API读取XML文档,获取文档元素、属性和数据等。下面是解析XML的步骤:

  1. 加载dom4j库和相关类

```java
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

//...
```

  1. 创建SAXReader,加载XML文档

java
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));

  1. 获取文档根节点和子节点

java
Element root = document.getRootElement();
Element child = root.element("child");

  1. 获取节点属性和数据

java
String attributeValue = child.attributeValue("key");
String textValue = child.getText();

这段代码读取名为input.xml的XML文档,获取根节点<root>和子节点<child>,并获取子节点的属性key的值和文本值。注意这里的getText()方法返回的是Doucment内部的文本数据,即除去子标签的所有内容。

示例1

下面是一个完整的例子,首先生成一个XML文档,然后使用SAXReader解析该文档,并输出解析结果。

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 生成和解析XML文档的例子,包含一个子节点及其属性和数据。
 */
public class XmlExample {
    public static void main(String[] args) {
        try {
            String fileName = "example.xml";
            // 生成XML文档
            Document document = DocumentHelper.createDocument();
            Element root = document.addElement("root");
            Element child = root.addElement("child");
            child.addAttribute("key", "value");
            child.setText("Hello, world!");
            XMLWriter writer = new XMLWriter(new FileOutputStream(new File(fileName)));
            writer.write(document);
            writer.close();

            // 解析XML文档
            SAXReader reader = new SAXReader();
            Document document2 = reader.read(new File(fileName));
            Element root2 = document2.getRootElement();
            Element child2 = root2.element("child");
            String attributeValue = child2.attributeValue("key");
            String textValue = child2.getText();
            System.out.println("Attribute: " + attributeValue + ", Text: " + textValue);
        } catch (IOException |DocumentException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

执行该代码,可看到输出结果为:

Attribute: value, Text: Hello, world!

示例2

下面是另一个完整的例子,首先使用SAXReader解析一个XML文档,然后对文档进行遍历和修改,并生成一个新的XML文档。

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

/**
 * 解析和修改XML文档的例子,包含一些元素和文本数据。
 */
public class XmlExample2 {
    public static void main(String[] args) {
        try {
            String fileName = "example2.xml";
            // 解析XML文档
            SAXReader reader = new SAXReader();
            Document document = reader.read(new File(fileName));
            Element root = document.getRootElement();

            // 遍历和修改XML文档
            List<Element> elements = root.elements();
            for (Element element : elements) {
                if (element.getName().equals("child")) {
                    Element newElement = element.addElement("newNode");
                    newElement.addAttribute("key", "newvalue");
                    newElement.addText("newdata");
                    element.remove(element.element("subnode"));
                }
            }

            // 保存修改后的XML文档
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter writer = new XMLWriter(new FileOutputStream(new File("output2.xml")), format);
            writer.write(document);
            writer.close();
        } catch (IOException | DocumentException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

这个例子从名为example2.xml的XML文档中读取所有元素,遍历每个元素并做出操作,然后输出修改后的XML文件到名为output2.xml的文件。做出的操作是:如果该元素名字为child,向其添加一个名为newNode的新元素、一个名为key的属性和一个文本值为newdata的文本节点,并移除名为subnode的子节点。运行这个代码,可得到一个新的XML文档,其内容与源文档类似,但是经过了修改。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java dom4j生成与解析XML案例详解 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 字符集和字符编码(Charset & Encoding)

    字符集和字符编码 (Charset & Encoding) 在计算机中,字符集是一组可用字符的集合。每个字符都有一个唯一的数字标识,这个数字标识成为字符编码。因此,字符编码是指将字符映射到它们的唯一标识符的过程,这个过程是与特定的字符集相关的。 常见的字符集有 ASCII、ISO-8859、GB2312、GBK、UTF-8 等。不同的字符集支持的字符…

    html 2023年5月31日
    00
  • Android编程解析XML文件的方法详解【基于XmlPullParser】

    下面是一份详细讲解“Android编程解析XML文件的方法详解【基于XmlPullParser】”的攻略。 标题 Android编程解析XML文件的方法详解【基于XmlPullParser】 简介 在Android开发中,我们经常需要解析XML文件,比如解析网络数据、解析配置文件等。Android提供了多种解析XML的方式,其中最常用的是基于XmlPullP…

    html 2023年5月30日
    00
  • 抖音发来侵权通知怎么办?抖音侵权投诉方法

    以下是“抖音发来侵权通知怎么办?抖音侵权投诉方法”的完整攻略: 抖音发来侵权通知怎么办? 如果您在抖音上发布的内容被他人投诉侵权,抖音会向您发送侵权通知。在收到侵权通知后,您需要及时采取措施,以避免进一步的法律纠纷。以下是一些关于抖音发来侵权通知怎么办的技巧和步骤,可以帮助您完成这些操作。 技巧1:了解侵权通知的内容 在收到侵权通知后,您需要仔细阅读该通知的…

    html 2023年5月18日
    00
  • mysql5.7怎么安装 mysql 5.7安装图文教程

    以下是MySQL 5.7安装图文教程的完整攻略: 下载MySQL 5.7安装包:首先,您需要从MySQL官网下载MySQL 5.7安装包。请注意,MySQL 5.7有两个版本可供下载:社区版和企业版。如果您只是想在个人电脑上学习和使用MySQL,建议您下载社区版。 安装MySQL 5.7:下载完成后,双击安装包,按照提示进行安装。在安装过程中,您需要选择My…

    html 2023年5月17日
    00
  • 美图秀秀怎么设计闪图?

    美图秀秀是一款功能强大的图片处理软件,它可以帮助用户设计出各种各样的图片,包括闪图。以下是设计闪图的详细攻略: 步骤1:打开美图秀秀 打开美图秀秀软件。 单击“新建”按钮。 选择“自定义尺寸”。 输入闪图的尺寸。 单击“确定”按钮。 步骤2:添加图片和文字 单击“插入”菜单。 选择“图片”或“文字”。 选择要添加的图片或文字。 拖动图片或文字到闪图中。 步骤…

    html 2023年5月17日
    00
  • edge浏览器怎么打开兼容模式实现IE浏览器的功能?

    以下是“Edge浏览器怎么打开兼容模式实现IE浏览器的功能?”的完整攻略: Edge浏览器怎么打开兼容模式实现IE浏览器的功能? 在某些情况下,用户需要使用IE浏览器的功能,但是又不想切换到IE浏览器。这时候,用户可以在Edge浏览器中打开兼容模式,实现IE浏览器的功能。下面是具体的操作步骤。 Edge浏览器打开兼容模式的步骤 打开Edge浏览器:用户需要打…

    html 2023年5月18日
    00
  • html5中的input新属性range使用记录

    下面是关于 “HTML5中的input新属性range使用记录” 的详细攻略: 简介 <input type=”range”> 是 HTML5 中新添加的表单元素之一,它用于让用户在给定的范围内选择一个数值,类似于滑动条的效果。本文将介绍 <input type=”range> 的使用方法。 属性 <input type=”ra…

    html 2023年5月31日
    00
  • HTML是什么?HTML简介

    HTML,即超文本标记语言(HyperText Markup Language),是一种用于创建网页的标记语言。HTML可以定义网页中的文本、图像、视频、音频、链接等元素,并且可以调整它们的样式和排版。 HTML是一种非常重要的前端技术,掌握它可以帮助你创建出丰富、动态、互动的网页。下面我们详细介绍HTML的各个方面。 HTML的基本结构 每个HTML文件都…

    2023年3月15日
    00
合作推广
合作推广
分享本页
返回顶部