RapidXML xml_document の完全なコピーを取得するにはどうすればよいですか?
clone_node 関数があります。to を使用して既存のドキュメントの完全なコピーを作成する方法
あなたがすでに推測したように、関数clone_node
メソッドがあります。オンライン ヘルプから:
xml_node* clone_node(const xml_node< Ch > *source, xml_node< Ch > *result=0);
xml_node とその子ノードおよび属性の階層を複製します。ノードと属性は、このメモリ プールから割り当てられます。名前と値は複製されず、複製とソースの間で共有されます。結果ノードはオプションで 2 番目のパラメーターとして指定できます。この場合、その内容は複製されたソース ノードに置き換えられます。これは、ドキュメント全体を複製する場合に便利です。
FreshCodeによって提案されたアプローチは非常に単純ですが、「toString & parseBack」に不必要なオーバーヘッドが追加されるため、避けたい場合があります。
よりクリーンなツリーベースのアプローチがあると確信していますが、次の方法で解決しました。ここで、str は別のドキュメントからの xml 出力です。
xml_document<> doc;
doc.parse<0>(doc.allocate_string(str));