使用python读取xml数据

时间:2015-08-18 10:46:42

标签: python xml elementtree

我在xml中有一些数据,如:

<test a=10 b=20>Hello</test>
<test a=30 b=40>Hi</test>

我如何读取a,b以及Hello和Hi的值。 我做过一些事情:

tt = xml.findall('test')
no  = len(tt)
for i in range (0, no):
    print tt[i].get(a)
    print tt[i].get(b)
    print xml.findtext('test')

此代码输出

10 20 Hello
30 40 Hello

这对于第二次迭代是错误的,它应该打印&#34;嗨&#34;而不是&#34;你好&#34;。

2 个答案:

答案 0 :(得分:1)

您可以简单地遍历xml.findall()的返回列表,而不是使用索引。像 -

这样的东西
tt = xml.findall('test')
no  = len(tt)
for t in tt:
    print t.get('a')
    print t.get('b')
    print t.text

当你这样做时 - xml.findtext()再次在完整的xml上运行xpath并获取它找到的第一个元素的文本,这就是你遇到问题的原因。只需从.text返回的xml元素中获取xml.findall()属性,如上所述。

答案 1 :(得分:0)

此处Python Doc说明了findtext

  

findtext(匹配,默认=无)
查找匹配匹配的第一个子元素的文本。 match可以是标签名称或路径。返回文本   第一个匹配元素的内容,如果没有元素,则为默认值   找到。请注意,如果匹配元素没有文本内容为空   返回字符串。

它始终会找到first subelement匹配match因此始终Hello