如何获取RapidXML xml_document的完整副本?
有一个clone_node函数;如何用来创建现有文档的完整副本?
答案 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));