克隆圆顶。文档对象

2022-09-02 23:57:28

我的目的是将xml文件读入Dom对象,编辑dom对象,这涉及删除一些节点。

完成此操作后,我希望将Dom恢复到其原始状态,而无需实际解析XML文件。

无论如何,我可以克隆我在第一次解析xml文件后获得的dom对象。这个想法是避免一直读取和解析xml,只需保留原始dom树的副本即可。


答案 1

您可以在 org.w3c.dom.Document 上使用 importNode API:

Node copy = document.importNode(node, true);

完整示例

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;

public class Demo {

    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();

        Document originalDocument = db.parse(new File("input.xml"));
        Node originalRoot = originalDocument.getDocumentElement();

        Document copiedDocument = db.newDocument();
        Node copiedRoot = copiedDocument.importNode(originalRoot, true);
        copiedDocument.appendChild(copiedRoot);

    }
}

答案 2
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer tx   = tfactory.newTransformer();
DOMSource source = new DOMSource(doc);
DOMResult result = new DOMResult();
tx.transform(source,result);
return (Document)result.getNode();

这将是Java 1.5解决方案,用于制作DOM文档的副本。看看变压器工厂变压器