TinyXML2:替换节点功能?

TinyXML2: Replace Node function?

我很难使用 TinyXML2 (https://github.com/leethomason/tinyxml2) 编写一个 C/C++ 方法来替换给定的节点,例如:


    <doc>
      <replace>Foo</replace>
    </doc>
...与另一个节点:

    <replacement>Bar</replacement>
...所以结果是:
    <doc>
      <replacement>Bar</replacement>
    </doc>
但是,要替换的节点可能会出现多次,我想保留顺序以防我用其他东西替换第二个节点。

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

是否有关于如何做到这一点的示例?任何帮助将不胜感激。

有示例代码吗?

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

这个答案似乎也相关:

我建议使用访问者模式将源代码 xml 复制到新文档中,并在进行时进行替换。就地替换很可能会导致断链和您正在经历的无限循环。

你可以找到使用访问者模式进行替换的示例(在元素属性和文本中,但原理相同)here。查看底部附近的 xcopy 函数和相关代码。