我有一组工具可以索引大型 XML 文件(MediaWiki 转储文件)并使用这些索引来随机访问存储在文件中的各个记录。它工作得很好,但我正在用字符串函数和/或正则表达式“解析”XML,而不是真正的 XML 解析器,如果将来更改文件的创建方式,这是一个脆弱的解决方案。
一些或大多数 XML 解析器有办法做这些事情吗?
(我有用 C、Perl 和 Python 编写的工具版本。将整个文件解析到某种数据库或将它们映射到内存不是选项。)
更新
以下是粗略的统计数据: 我使用的文件大多是每周发布一次,当前文件的大小为 1,918,212,991 字节。我的索引工具的 C 版本在我的上网本上需要几分钟时间,并且对于每个发布的新 XML 文件只需运行一次。我很少在另一个 XML 文件上使用相同的工具,该文件的当前大小为 30,565,654,976 字节,并且在 2010 年仅更新了 8 次。