Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java创建多个同名xml元素的最佳方法是什么?_Java_Xml_Jdom - Fatal编程技术网

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

用Java创建多个同名xml元素的最佳方法是什么?,java,xml,jdom,Java,Xml,Jdom,假设我要创建以下xml: <root> <element> text 1 </element> <element> text 2 </element> <element> text 3 </element> . . . n elements </root&g

假设我要创建以下xml:

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

文本1
文本2
文本3
.
.
.
n元素
对于java循环,我在使用jdom.element创建它时遇到了困难,因为在第二次迭代中,它说已经有一个名为“element”的元素,我已经读到,一旦附加,就不能创建更多相同的元素,所以使用clone或其他方法,但我还没有弄清楚如何创建,我相信这应该相当简单

int i = 0;
int n = 100;
while(i < n){
    (Missing code)
}
inti=0;
int n=100;
而(i
缺少代码是我需要的

EDIT:很抱歉我太懒了,我添加了代码来更好地举例说明我需要做什么,以及哪些工作有效,但是@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 eElements=new org.jdom.Element(“Elements”);
元素e;
Element-eSubElement1=新的org.jdom.Element(“SubElement1”);
Element-eSubElement2=新的org.jdom.Element(“SubElement2”);
int i=0;
int n=100;
而(i
我认为每次调用一个新的“元素”就足够了,但您也必须调用新的“SubElementX”

虽然循环有效:

        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);
    }
while(i
对于XML处理(编组/解编),我建议使用JAXB而不是jdom

由于不知道具体的用例(我假设它可能不仅仅是一个简单的文本,至少在理论上是这样),我会使用表示xml元素的POJO和表示xml根的另一个POJO,它们基本上只包含xml元素POJO的列表

这样,您就可以在while循环中使用xml元素POJO填充xml根POJO,完成后,将xml根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));
}
元素根=新元素(“根”);
对于(int i=0;i<100;i++){
root.addContent(新元素(“元素”).setText(“文本”+i));
}

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

您应该在此处发布代码,我们将帮助您修复代码。使用什么API?您在哪里读过?这个问题是关于什么的?