我有一个非常复杂的XML文档,我想要解析。 我的第一步是计算< H>我的XML文档中的标记。 这是我的XML的简化版本:
<file>
xmlns="http://www.namespace.co.il"
<H Id="1012532" W="2198.05">
///more tags
</H>
<H Id="623478" W="3215.05">
///more tags
</H>
etc.
</file>
现在我想做的是计算H元素,所以这就是我尝试过的:
import xml.etree.ElementTree as ET
tree = ET.parse(xml_file)
ns = {'nmsp': 'http://www.namespace.co.il'}
count =1
for HH in tree.iterfind(str(ns['nmsp']+':H')):
print count
count=count+1
当我运行此代码时,控制台上没有任何内容。 知道为什么吗?
答案 0 :(得分:2)
我认为您的问题有already been answered。
zeekay的回答是:
import lxml.etree
doc = lxml.etree.parse(xml)
count = doc.xpath('count(//author)')
(在你的版本中,“作者”应改为'H',我猜)
编辑:
关于你自己的代码(我花了一些时间才找到它):
你的循环应该是
for HH in root.iterfind('nmsp:H', ns):
正如here所指出的那样,您需要提供有关命名空间字典的信息,而不仅仅是'nmsp'下的值。
答案 1 :(得分:2)
这是你要找的吗?
tree.iterfind('{http://www.namespace.co.il}H')