我已经使用xml minidom从xml文件中获取一些数据但无法获得所需的结果…尝试从x2 minidom相关的此站点的许多代码但是失败..这是我的示例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树并从作为计算机子级的部分节点中的文本子项中获取所需的子节点:
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导航,最好使用Element Tree API.