Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ TinyXML2:替换节点功能?_C++_C_Xml_Tinyxml2 - Fatal编程技术网

C++ TinyXML2:替换节点功能?

C++ TinyXML2:替换节点功能?,c++,c,xml,tinyxml2,C++,C,Xml,Tinyxml2,我很难使用TinyXML2()编写一个C/C++方法来替换给定节点,如: <doc> <replace>Foo</replace> </doc> 福 …使用另一个节点: <replacement>Bar</replacement> 条形码 …因此结果是: <doc> <replacement>Bar</replacement> &

我很难使用TinyXML2()编写一个C/C++方法来替换给定节点,如:

    <doc>
      <replace>Foo</replace>
    </doc>
…使用另一个节点:

    <replacement>Bar</replacement>

条形码
…因此结果是:
<doc>

      <replacement>Bar</replacement>
    </doc>

酒吧
但是,要替换的节点可能会出现多次,如果我用其他节点替换第二个节点,我希望保持顺序

这实际上应该是直截了当的,但我的失败在于无休止的递归


是否有一个关于如何做到这一点的例子?非常感谢您的帮助。

您有示例代码吗

您可以尝试调用
tinyxml2::XMLNode::InsertAfterChild
插入
,然后删除


这个答案似乎也是相关的:

我建议使用访问者模式将源xml复制到一个新文档中,并在执行时进行替换。替换到位很可能会导致断链和你正在经历的无尽循环


您可以找到一个使用vistor模式进行替换的示例(在元素属性和文本中,但原理相同)。请参阅底部附近的xcopy函数和相关代码。

我尝试过这样做,但奇怪的是,如果我在那里添加节点并删除,则会同时删除这两个节点:-/将代码放在github中。我应该可以帮你做这个。我已经创建了一个最小的测试用例和一个要点。(以前从未这样做过,所以花了一段时间…:-)。请看这里:……我应该补充一点,我试图做的是实现将配置的一部分包含到主配置中的能力。我不能使用XInclude,因为对于嵌入式平台来说,代码必须是最小的。我在过去几天尝试过,但我放弃了。Tinyxml2ex的问题在于它需要C++14。不幸的是,对于嵌入式系统来说,这是通往现代的道路。我尝试了一个系统更新,编译器更新,但这破坏了其他东西,所以我回到了本机TinyXML2(但还没有解决它)。非常感谢你的帮助,非常感谢。