当我使用DOM将java对象序列化为xml文件时,我在尝试复制元素时遇到了问题。
我想生成两个xml文件,第一个只包含一个子元素,第二个包含两个子元素(实际上是元素的副本)。
因此,xml文件应为:
1.xml
<fruit>
<apple name="XXX"/>
</fruit>
2.xml
<fruit>
<apple name="XXX"/>
<apple name="XXX"/>
</fruit>
我使用名为“times”的变量一次生成两个文件来控制。我的代码是这样的: public void static main(String [] args){ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = factory.newDocumentBuilder(); 文档doc = docBuilder.newDocument();
// create the fruit element
Element fruit = doc.createElement("fruit");
doc.appendChild(fruit);
int times = 2;
Element fruitCopy = (Element)fruit.cloneChild(true);
for(int i=1; i<=times; i++) {
fruit = createApples(doc, fruitCopy, i);
System.out.println(fruitCopy.getChildNodes().getLength());
// write the output xml file
......
}
}
public Element static createApples(Document doc, Element fruit, int noOfCopies) {
for(int j=0; j < noOfCopies; j++) {
// create apple element
Element apple = doc.createElement("apple");
apple.setAttribute("name",Apple.getName());
// set other attributes
....
fruit.appendChild(apple);
}
return fruit;
}
打印行的输出为:
0
2
但是我希望fruitCopy在将它传递给createApple方法时一直是空的.....因此,我想要的打印行的输出应该是:
0
0
我搜索了DOM API,它说clondNode()方法将从克隆的不可变元素创建一个可变元素。那么这意味着只要原来的“水果”被修改,那么“fruitCopy”也是如此?
谢谢!!!!!