当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何使用JavaDOM克隆整个文档?》经验,为你挑选了1个好方法。

我正在寻找一种可靠的,与实现无关的克隆整个文档的方法.Javadocs特别指出,在Document上调用cloneNode是特定于实现的.我已经尝试通过无操作的Transformer传递Document,但生成的Node没有所有者Document.

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

有任何想法吗?

顺便说一句,由于我无法控制的原因,我陷入了Java 1.4.2.



1> Ichiro Furus..:

正如一些评论指出的那样,序列化和重新解析文档存在问题.除了内存使用,性能考虑和规范化之外,还会丢失prolog(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();

基本上就是这样.您需要处理异常并且可能希望配置变换器,但我将其留作读者练习.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有