我需要搜索大小介于10到200MB之间的XML文件,以查找始终与XML文件位于同一级别的特定字符串,在同一标记下方。
如果我找到这个特定的字符串,那么我需要从树中收集其他数据。不幸的是,感兴趣的价值深深嵌入数据中。并非每个文件都包含此标记。有时标签会包含查询值,有时则不会。
<foo>
<fun2>
<bla>Same level useless value with different tag</bla>
</fun2>
<fun>
<bar>
<maybeofinterest>Not of interest</maybeofinterest>
<maybeofinterest>Check the whole tree</maybeofinterest>
</bar>
</fun>
<foo>
我目前正在使用一个简单的ElementTree对象来保存我的XML树,而在较大的文件上它很慢(考虑到lxml)。当感兴趣的查询项目甚至不在文件中时,它也是一种可怕的浪费,然后整个树被抛出。
是否有快速查询特定标签的方法?还是一行一行地搜索笨笨的方式?如果块有错误的标签我可以跳过整个块,我希望有办法利用这个事实。