2

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

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

4

2 回答 2

4

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

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

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

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

于 2012-10-18T12:50:50.040 回答
1

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

xml_document<> doc;
doc.parse<0>(doc.allocate_string(str));
于 2010-08-20T17:54:02.647 回答