在Python中从XML中获取元素

时间:2014-02-27 22:25:03

标签: python xml elementtree

好。我知道这是重复的。

然而,我是一个不错的程序员,我已经尝试了2个小时而一无所获!!

xml文件的前几行如下所示。

<response>
    <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">2</int>
    <lst name="params">
        <str name="d">100</str>
        <str name="sort">score asc</str>
        <str name="fl">
                        .
                        .
                        .

在这里,我想要的只是<int name="QTime"></int>之间的数字,在这种情况下是2。

我该怎么做? 我使用过ElementTree,文档很糟糕。

1 个答案:

答案 0 :(得分:1)

使用lxml.etree,并假设<response>是文档根目录,您可以这样做:

import lxml.etree
xml = lxml.etree.parse(<file-like object>)
root = xml.getroot()
elements = root.xpath("int[@name='QTime']")
values = [int(x.text.strip()) for x in elements]

其中<file-like object>可以是已打开的file对象或StringIO::StringIO对象等...

elements将是<int name="QTime">元素的列表。 values将是相应的整数值列表。

如果<response>不是文档根目录,则可以使用//response/int[@name='QTime']中的xpath代替。