使用Python计算XML文档中的标记

时间:2016-01-06 06:52:35

标签: python xml parsing

我有一个非常复杂的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

当我运行此代码时,控制台上没有任何内容。 知道为什么吗?

2 个答案:

答案 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')