我很难使用TinyXML2(https://github.com/leethomason/tinyxml2)来编写一个替换给定节点的C / C ++方法,如:
<doc>
<replace>Foo</replace>
</doc>
...与另一个节点:
<replacement>Bar</replacement>
...结果是:
<doc>
<replacement>Bar</replacement>
</doc>
但是,如果我用其他东西替换第二个节点,那么要替换的节点可能会出现多次我希望保留顺序。
这实际上应该是直截了当的,但我无法进行无休止的递归。
可能有一个例子,如何做到这一点?任何帮助将不胜感激。
答案 0 :(得分:0)
您有示例代码吗?
您可以尝试拨打tinyxml2::XMLNode::InsertAfterChild
以插入<replacement>
,然后删除<replace>
。
这个答案似乎也很相关:Updating Data in tiny Xml element
答案 1 :(得分:0)
我建议您使用访问者模式将源xml复制到新文档中。替换就地很可能导致链条断裂和你遇到的无限循环。
您可以找到使用vistor模式进行替换的示例(在元素属性和文本中,但它的原理相同)here。请参阅底部附近的xcopy函数和相关代码。