克隆rapidxml :: xml_document

时间:2010-08-17 15:28:54

标签: c++ xml rapidxml

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

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

2 个答案:

答案 0 :(得分:3)

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

  

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

     

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

FreshCode提出的方法非常简单,但为“toString& parseBack”增加了一些不必要的开销,你可能希望避免这种开销。

答案 1 :(得分:1)

我确信有一种更干净,基于树的方法,但我用以下方法解决了这个问题,其中str是来自另一个doc的xml输出:

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