我有一个非常大的(1.8GB)XML文档。我想简单地找到标记为<Product>
的元素数量。
我到目前为止:
context = etree.iterparse('./test.xml', tag='Product')
num_elems = 0
for event, elem in context:
num_elems += 1
print num_elems
它有效,但有更快的方法吗?
答案 0 :(得分:1)
由于这有效,我认为内存使用不是问题(iterparse
将在内存中构建整个文件的树,除非你在迭代元素时修剪它) 。在这种情况下,省去在Python中迭代和计数的麻烦,让LXML / libxml
在C中处理它:
tree = etree.parse("./test.xml")
num_elems = tree.xpath("count(//Product)") # note: returns a float