gpt4 book ai didi

c++ - XML 编辑/替换的好选择

转载 作者:数据小太阳 更新时间:2023-10-29 02:32:10 24 4
gpt4 key购买 nike

我有一个巨大(超过 10 万行,5MB 以上)的 XML,它充当我的 C++ 应用程序的数据库。 XML 的结构非常简单,例如,它包含以下 block :

<foo>
<bar prop="true"/>
<baz>blah</baz>
</foo>

标签的嵌套有几层深,并且有很多项目具有多个属性。查找和替换此类文件 block 的好方法是什么?例如,假设上面的部分重复了几十次,并且在每个 block 中标签的值 <baz>是不同的。我想进行如下编辑:

  • 设置标签 <baz> 中包含的所有值给定值。
  • 删除包含特定值的 block

到目前为止,我已经了解了以下实现此目的的方法:

  • 查找/替换:一个简单易行的解决方案,也是我最后的后备方案。恕我直言,这种方法是最耗时、最容易出错且最痛苦的方法。绝对的最后手段。

  • RegExes:使用正则表达式匹配感兴趣的 block 并使用替换表达式对其进行编辑。有点像这个博客条目:http://blogs.msdn.com/b/vseditor/archive/2004/08/12/213770.aspx .但我觉得这很容易出错,如果正则表达式第一次不完全正确,可能会遗漏很多项目。

  • 解析并保存:快速编写一个程序,使用 Xerces 或 XML DOM 接口(interface)(或其他一些 XML 库)解析 XML,读入 XML,根据需要对其进行操作,然后存回磁盘。同样,这种方法是一个缓慢的过程,但一旦启动并运行,就很容易进行修改,并且比 RegEx 更灵活。

有没有更好的方法来处理这个问题?(编辑:感谢所有重做它以使用数据库建议,我知道它是一个巨大的困惑但是“更好的方法来处理这个”我的意思是“查找/替换”部分。)

最佳答案

如果您不想将整个文档放在内存中,我会使用 SAX 解析器读取它。在您阅读它时,您将转换后的文档附加到第二个(或临时)文件。我认为它可能会非常快,并且只占用很少的内存。

关于c++ - XML 编辑/替换的好选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6112679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com