0

当我使用 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”也是如此?

谢谢!!!!!

4

0 回答 0