2010-08-17 76 views
2

如何获得RapidXML xml_document的完整副本?克隆rapidxml :: xml_document

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

+0

大多数时候xml库会给你选择只克隆节点,或者做一个深度克隆,你可以设置它来给它下面的树。 – James 2010-08-17 15:30:58

回答

1

我敢肯定有一个更清洁,基于树的方法,但我用下面,其中str是从另一个文档输出的XML解决它:

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

因为你已经猜到了有功能clone_node方法。从在线帮助:

xml_node * clone_node(常量xml_node <章> *源,xml_node <章> *结果= 0);

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

通过FreshCode提出的方法是相当简单的,但他补充说,你可能希望避免不必要的开销“的toString & parseBack”。