当我使用 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() 方法将从被克隆的不可变元素创建一个可变元素。那么这是否意味着只要修改了原来的“fruit”,那么“fruitCopy”也是如此?
谢谢!!!!!