在Python中从XML获取文本值

4 投票
2 回答
7983 浏览
提问于 2025-04-15 14:22
from xml.dom.minidom import parseString
dom = parseString(data)
data = dom.getElementsByTagName('data')

这个'data'变量返回的是一个元素对象,但我在文档里找了半天也看不到怎么获取这个元素的文本值。

举个例子:

<something><data>I WANT THIS</data></something>

有没有人有什么想法?

2 个回答

4

我们可以这样理解:“我想要这个”其实是另一个节点。它是“data”的一个文本子节点。

from xml.dom.minidom import parseString
dom = parseString(data)
nodes = dom.getElementsByTagName('data')

此时,“nodes”是一个节点列表,在你的例子中,它里面只有一个项目,就是“data”这个元素。相应地,“data”元素也只有一个子节点,就是文本节点“我想要这个”。

所以你可以这样做:

print nodes[0].firstChild.nodeValue

注意,如果你的输入中有多个叫“data”的标签,你应该对“nodes”使用某种循环技术,而不是直接通过索引来访问。

3

这段代码应该能解决问题:

dom = parseString('<something><data>I WANT THIS</data></something>')
data = dom.getElementsByTagName('data')[0].childNodes[0].data

也就是说,你需要更深入地了解DOM结构,找到文本子节点,然后获取它的值。

撰写回答