好。我知道这是重复的。
然而,我是一个不错的程序员,我已经尝试了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
,文档很糟糕。
答案 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
代替。