在Python中从XML获取文本值
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结构,找到文本子节点,然后获取它的值。