【问题标题】:Clone libxml2 document克隆 libxml2 文件
【发布时间】:2016-04-02 19:00:54
【问题描述】:

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

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

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

【问题讨论】:

    标签: c xml clone libxml2


    【解决方案1】:

    您可能正在寻找xmlCopyDoc

    xmlDocPtr xmlCopyDoc (xmlDocPtr doc, 
                          int recursive)
    

    复制文档信息。如果是递归的,内容树以及 DTD、命名空间和实体也会被复制。

    doc: 文档
    recursive: 如果不为零,则进行递归复制。
    返回: 一个新的 #xmlDocPtr , 或 NULL 以防出错。

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      相关资源
      最近更新 更多