【问题标题】:Cloning rapidxml::xml_document克隆 rapidxml::xml_document
【发布时间】:2010-08-17 15:28:53
【问题描述】:

如何获得 RapidXML xml_document 的完整副本?

有一个clone_node函数;如何使用 to 创建现有文档的完整副本?

【问题讨论】:

  • 大多数情况下,xml 库会为您提供仅克隆节点或进行深度克隆的选项,您可以将其设置为在其下方提供树。

标签: c++ xml rapidxml


【解决方案1】:

正如您已经猜到的那样,有函数clone_node 方法。来自在线帮助:

xml_node* clone_node(const xml_node *source, xml_node *result=0);

克隆一个 xml_node 及其子节点和属性的层次结构。节点和属性是从这个内存池中分配的。名称和值不会被克隆,它们在克隆和源之间共享。结果节点可以选择指定为第二个参数,在这种情况下,它的内容将被克隆的源节点替换。这在您想要克隆整个文档时很有用。

FreshCode 提出的方法非常简单,但会给“toString & parseBack”增加不必要的开销,您可能希望避免。

【讨论】:

    【解决方案2】:

    我确信有一种更简洁、基于树的方法,但我用以下方法解决了它,其中 str 是另一个文档的 xml 输出:

    xml_document<> doc;
    doc.parse<0>(doc.allocate_string(str));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 2010-10-19
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      相关资源
      最近更新 更多