如何获得 RapidXML xml_document 的完整副本?
有一个clone_node函数;如何使用 to 创建现有文档的完整副本?
正如您已经猜到的那样,有函数clone_node
方法。从在线帮助:
xml_node* clone_node(const xml_node< Ch > *source, xml_node< Ch > *result=0);
克隆 xml_node 及其子节点和属性的层次结构。节点和属性是从这个内存池中分配的。名称和值不会被克隆,它们在克隆和源之间共享。结果节点可以选择指定为第二个参数,在这种情况下,它的内容将被克隆的源节点替换。当您想要克隆整个文档时,这很有用。
FreshCode提出的方法非常简单,但是给“toString & parseBack”增加了不必要的开销,您可能希望避免这种开销。
我确信有一种更简洁的基于树的方法,但我用以下方法解决了它,其中 str 是另一个文档的 xml 输出:
xml_document<> doc;
doc.parse<0>(doc.allocate_string(str));