用Java创建多个同名xml元素的最佳方法是什么?
假设我要创建以下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
<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?您在哪里读过?这个问题是关于什么的?