2010-08-17 70 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」。