TinyXML2:替换节点函数

TinyXML2: Replace Node function?

本文关键字:函数 节点 替换 TinyXML2      更新时间:2023-10-16

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


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

    <replacement>Bar</replacement>
...因此,结果是:

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

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

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

你有示例代码吗?

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

这个答案似乎也相关:更新微小 Xml 元素中的数据

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

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