C++ TinyXML2:替换节点功能?
我很难使用TinyXML2()编写一个C/C++方法来替换给定节点,如: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> &
<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(但还没有解决它)。非常感谢你的帮助,非常感谢。