Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从XML获取文本值_Python_Xml_Parsing - Fatal编程技术网

在Python中从XML获取文本值

在Python中从XML获取文本值,python,xml,parsing,Python,Xml,Parsing,“data”变量以元素对象的形式返回,但我无法在文档中找到元素的文本值 例如: from xml.dom.minidom import parseString dom = parseString(data) data = dom.getElementsByTagName('data') 我想要这个 有人有什么想法吗?这应该可以做到: <something><data>I WANT THIS</data></something> dom=par

“data”变量以元素对象的形式返回,但我无法在文档中找到元素的文本值

例如:

from xml.dom.minidom import parseString
dom = parseString(data)
data = dom.getElementsByTagName('data')
我想要这个

有人有什么想法吗?

这应该可以做到:

<something><data>I WANT THIS</data></something>
dom=parseString('我想要这个')
data=dom.getElementsByTagName('data')[0]。子节点[0]。数据

i、 e.您需要深入DOM结构以获取文本子节点,然后访问其值

因此,从另一个角度来看,“我想要这个”实际上是另一个节点。它是“数据”的文本子级

此时,“nodes”是一个节点列表,在您的示例中,它有一个项目,即“data”元素。相应地,“data”元素也只有一个子元素,即文本节点“I WANT THIS”

所以你可以这样做:

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

请注意,如果输入中有多个名为“data”的标记,则应在“nodes”上使用某种迭代技术,而不是直接对其进行索引。

请注意,如果是空字符串,则不会有子文本节点,因此childNodes[0]将失败。要正确收集文本数据,必须遍历childNodes并连接来自node.nodeType为text\u node或CDATA\u SECTION\u node的所有节点的数据。ElementTree接口更简单。
from xml.dom.minidom import parseString
dom = parseString(data)
nodes = dom.getElementsByTagName('data')
print nodes[0].firstChild.nodeValue