我想说我想创建这个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);
}
答案 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")