我已经使用XML minidom从XML文件中获取一些数据,但无法获得期望的结果…从这个站点尝试了许多与XML迷你相关的代码,但都失败了。这是我的示例XML文件。
<computer>
<parts>
<text>Required</text>
</parts>
<parts>
<text>Required</text>
<parts>
<text>?Not Required</text>
</parts>
<parts>
<text>?Not Required</text>
</parts>
</parts>
<parts>
<text>Required</text>
<parts>
<text>Not Required</text>
</parts>
</parts>
<parts>
<text>Required</text>
</parts>
</computer>
我想得到的文本是"必需的",但得到的输出像这样
Required
Required
Not Required
Not Required
Required
Not Required
Required
这是我的代码样本,从文件中获取所有文本,但我需要这样的标签内的文本,是父标签的直接子…
from xml.dom import minidom
file=('d:sample.xml')
xmldoc=minidom.parse(file)
parentnode = xmldoc.getElementsByTagName('computer')
for node in parentnode:
alist=node.getElementsByTagName('text')
for a in alist:
t=a.childNodes[0].nodeValue
print authortext
我想要的输出
Required
Required
Required
Required
除非您的实际XML非常复杂,否则您可以导航DOM树并从computer
的子parts
节点的text
子节点中获得您想要的子节点:
import xml.dom.minidom
file=('sample.xml')
xmldoc=xml.dom.minidom.parse(file)
computerNode = xmldoc.getElementsByTagName('computer')
for computerChild in computerNode:
for parts in computerChild.childNodes:
for partsChild in parts.childNodes:
if partsChild.nodeType == xml.dom.Node.ELEMENT_NODE:
if partsChild.tagName == 'text':
print partsChild.childNodes[0].nodeValue
如前所述,要使用XPath和更简单的DOM导航,最好使用元素树API。