克隆libxml2文档

时间:2015-12-28 22:38:24

标签: c xml clone libxml2

在libxml2中克隆解析的XML文档内存表示的最佳方法是什么?

“克隆”是指深度克隆,一种独立的数据结构,代表与原始数据相同的数据。 “最佳方式”是指实现复杂性和性能开销之间的合理折衷。因此,例如,序列化和重新解析将是几行代码,但会产生不必要的解析开销。另一方面,由于所有案例的区别,手动克隆每个数据结构的每个成员可能会导致数百行代码。

此刻我最好的选择似乎是the xmlDOMWrapCloneNode function。但一方面,其预期目的是克隆单个节点,因此需要特别小心地构建兼容文档并使用它来接收克隆。另一方面,如果必须克隆整个文档,那么一些复杂性可能是可以避免的。然而,查看代码说明了这里涉及的复杂性。复制和调整所有代码似乎太过分了。

1 个答案:

答案 0 :(得分:5)

您可能正在寻找xmlCopyDoc

xmlDocPtr xmlCopyDoc (xmlDocPtr doc, 
                      int recursive)
     

复制文档信息。如果是递归的,内容树也将被复制,DTD,名称空间和实体也将被复制。

     

doc:文件
  递归:如果不为零则执行递归复制   返回:一个新的#xmlDocPtr,如果出错,则返回NULL。