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 函数和相关代码。
我很难使用 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 函数和相关代码。