使用Java创建多个具有相同名称的xml元素的最佳方法是什么?

时间:2015-06-24 03:01:07

标签: java xml jdom

我想说我想创建这个xml:

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

使用java循环,我无法使用jdom.element创建它,因为在第二次迭代中,它表示已经有一个名为&#34; element&#34;的元素,我已经读过一旦附加,你就不能创建更多相同的元素,所以使用克隆或其他东西,但我还没弄清楚如何,我相信这应该相当简单。

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);
    }

我认为这是一个新的&#34;元素&#34;每次都足够,但你必须打电话给新的&#34; SubElementX&#34;太

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);
    }

2 个答案:

答案 0 :(得分:1)

您显然是尝试多次添加同一个实例,或者其他内容。您应该创建Element&#34;元素&#34;的新实例。对于每个值。

类似的东西:

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

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

答案 1 :(得分:0)

对于XML处理(编组/解组),我建议使用JAXB而不是jdom。

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

这样你就可以在你的while循环中用xml-element-POJO填充xml-root-POJO,完成之后你将xml-root-POJO交给JAXB,然后将它编组成一个xml文件。 / p>

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