【问题标题】:Count tags in an XML doc using Python使用 Python 计算 XML 文档中的标签
【发布时间】:2016-01-06 06:52:34
【问题描述】:

我有一个非常复杂的 XML 文档,我想对其进行解析。 我的第一步是计算我的 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

当我运行此代码时,控制台不会打印任何内容。 知道为什么吗?

【问题讨论】:

  • 您的 XML 不正确 ..missing > 在 的末尾

标签: python xml parsing


【解决方案1】:

这是你要找的吗?

tree.iterfind('{http://www.namespace.co.il}H')

【讨论】:

    【解决方案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”下的值。

    【讨论】:

    • 谢谢!虽然我仍然很想知道为什么我的代码不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多