使用 python 读取 xml 数据

reading xml data using python

我在 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

第二次迭代是错误的,它应该打印 "Hi" 而不是 "Hello"。

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

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 并获取它找到的第一个元素的文本,这就是您遇到问题的原因。只需从 xml 元素 return 中获取 .text 属性 xml.findall() 如上所述。

这里Python Doc说的是findtext

findtext(match, default=None)
Finds text for the first subelement matching match. match may be a tag name or path. Returns the text content of the first matching element, or default if no element was found. Note that if the matching element has no text content an empty string is returned.

它总是找到 first subelement 匹配 match 因此总是 Hello.