Java如何在JDOM中的XML文档中添加和删除元素?

在List由返回的getChildren()方法调用是一个java.util.List。对List对象的任何修改都会立即反映在支持文档中。这使对XML文档的操作变得容易。

您还可以查看如何Element通过调用addContent()方法将新的文档添加到文档中。

package org.nhooo.example.jdom;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.List;

public class JDOMAddRemoveElement {
    public static void main(String[] args) {
        String xml = "<root>" +
                "   <user name=\"Alice\" age=\"21\" dob=\"20-01-1988\"/>" +
                "   <user name=\"Bob\" age=\"23\" dob=\"01-05-1986\"/>" +
                "</root>";

        SAXBuilder builder = new SAXBuilder();
        try {
            Document document = builder.build(
                    new ByteArrayInputStream(xml.getBytes()));

            // 使用以下命令将新元素添加到文档的根目录
            // addContent方法。
            document.getRootElement().addContent(
                    new Element("people").setAttribute("id", "1"));
            document.getRootElement().addContent(
                    new Element("people").setAttribute("id", "1"));

            //添加一个新元素。通过向列表中添加一个新元素
            //子级,我们可以修改xml文档。使用 
            // java.util.List进行XML文档的修改 
            // 简单容易。
            List<Element> children = document.getRootElement().getChildren();
            children.add(new Element("user")
                    .setAttribute("name", "Carol")
                    .setAttribute("age", "25")
                    .setAttribute("dob", "06-03-1984"));

            // 将元素添加到xml文档的开头。
            children.add(0, new Element("user")
                    .setAttribute("name", "Jimmy")
                    .setAttribute("age", "25")
                    .setAttribute("dob", "16-05-1984"));

            // 删除第四个元素。
            children.remove(3);

            XMLOutputter outputter =
                    new XMLOutputter(Format.getPrettyFormat());
            outputter.output(document, System.out);
        } catch (JDOMException | IOException e) {
            e.printStackTrace();
        }
    }
}

此代码的结果是:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <user name="Jimmy" age="25" dob="16-05-1984" />
  <user name="Alice" age="21" dob="20-01-1988" />
  <user name="Bob" age="23" dob="01-05-1986" />
  <people id="1" />
  <user name="Carol" age="25" dob="06-03-1984" />
</root>

Maven依赖

<!-- https://search.maven.org/remotecontent?filepath=org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar -->
<dependency>
    <groupId>org.jdom</groupId>
    <artifactId>jdom2</artifactId>
    <version>2.0.6</version>
</dependency>

Maven中央