gpt4 book ai didi

java - 如何使用 Java DOM 克隆整个文档?

转载 作者:数据小太阳 更新时间:2023-10-29 01:54:18 26 4
gpt4 key购买 nike

我正在寻找一种可靠的、独立于实现的方法来克隆整个文档。 Javadocs 特别指出在 Document 上调用 cloneNode 是特定于实现的。我已尝试通过无操作转换器传递文档,但生成的节点没有所有者文档。

我可以创建一个新文档并从旧文档导入节点,但我担心可能会丢失一些文档元数据。将 Document 写入字符串并将其解析回来也是一样。

有什么想法吗?

顺便说一句,由于我无法控制的原因,我一直停留在 Java 1.4.2。

最佳答案

正如一些评论所指出的,序列化和重新解析文档存在问题。除了内存使用、性能考虑和规范化之外,还有序言(DTD 或模式)的丢失、注释的潜在丢失(不需要捕获)以及可能重要的空白的丢失。应避免序列化。

如果真正的目标是复制现有的 DOM Document 对象,那么它应该在内存中以编程方式处理。值得庆幸的是,有一种相对简单的方法可以使用 Java 5 中提供的功能或使用外部 XSLT 库(如 Xalan)来执行此操作,即传递转换。

下面是 Java 5 的解决方案:

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 - 如何使用 Java DOM 克隆整个文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/279154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com