0

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


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

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

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

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

4

2 回答 2

0

你有示例代码吗?

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

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

于 2017-01-07T06:03:52.323 回答
0

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

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

于 2017-01-10T00:01:43.890 回答