TinyXML2:替换节点功能?

时间:2017-01-07 05:46:07

标签: c++ c xml tinyxml2

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


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

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

这实际上应该是直截了当的,但我无法进行无休止的递归。

可能有一个例子,如何做到这一点?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您有示例代码吗?

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

这个答案似乎也很相关:Updating Data in tiny Xml element

答案 1 :(得分:0)

我建议您使用访问者模式将源xml复制到新文档中。替换就地很可能导致链条断裂和你遇到的无限循环。

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