我在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;。
答案 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
。