创建与 Java 同名的多个 xml 元素的最佳方法是什么?

What is the best approach to create multiple xml elements with same name with Java?

假设我想创建这个 xml:

<root>
    <element>
        text 1
    </element>
    <element>
        text 2
    </element>
    <element>
        text 3
    </element>
        .
        .
        .
    n elements
</root>

使用 java 循环,我在使用 jdom.element 创建它时遇到了问题,因为在第二次迭代时,它说已经有一个名为 "element" 的元素,我已经阅读一旦附加,你就不能创建更多相同的元素,所以使用克隆或其他东西,但我还没有弄清楚如何,我相信这应该相当简单。

int i = 0;
int n = 100;
while(i < n){
    (Missing code)
}

缺少代码是我需要的。

编辑:抱歉懒惰,我添加了代码以更好地举例说明我需要做什么以及有效的方法,但是@rolfl 理解我想做什么和我的问题,他解决了它。谢谢你。再次抱歉大家偷懒了

我的代码:

    Element eElements = new org.jdom.Element("Elements");
    Element eElement;
    Element eSubElement1 = new org.jdom.Element("SubElement1");
    Element eSubElement2 = new org.jdom.Element("SubElement2");

    int i = 0;
    int n = 100;

    while (i < n){
        eSubElement1.setText("Text " + i);
        eSubElement2.setText("Text " + i);
        eElement = new org.jdom.Element("Element");
        eElement.addContent(eSubElement1);
        eElement.addContent(eSubElement2);
        eElements.addContent(eElement);
    }

我以为每次调用一个新的"Element"就足够了,但你也必须调用一个新的"SubElementX"。

有效的 While 循环:

        while (i < n){
        eSubElement1 = new org.jdom.Element("SubElement1").setText("Text " + i);
        eSubElement2 = new org.jdom.Element("SubElement2").setText("Text " + i);
        eElement = new org.jdom.Element("Element");
        eElement.addContent(eSubElement1);
        eElement.addContent(eSubElement2);
        eElements.addContent(eElement);
    }

对于 XML 处理 (marshalling/unmarshalling) 我建议使用 JAXB 而不是 jdom。

不知道你的确切用例(我假设它可能不仅仅是一个简单的文本,至少在理论上),我会使用代表 xml 元素的 POJO 和代表 xml-root 并且基本上只包含 xml-element-POJO 的列表。

这样,您将在 while 循环中使用 xml-element-POJO 填充 xml-root-POJO,完成后,您将 xml-root 交给-POJO 到 JAXB,用于将其编组为 xml-文件。

在您的情况下,POJO 可能应该被注释为 @XmlRootElement(name = "root")@XmlElement(name = "element")

您显然是在尝试多次添加同一个实例,或者其他什么。您应该为每个值创建一个元素 "element" 的新实例。

类似于:

Element root = new Element("root");
for (int i = 0; i < 100; i++) {
    root.addContent(new Element("element").setText("Text " + i));
}

然后使用 XMLOutputter 输出 root 元素(使用输出器上的 Format.getPrettyFormat() 以在结果中获得漂亮的空白。