如何获得具有相同标记名称的直接子节点而不是子节点



我已经使用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。

相关内容

  • 没有找到相关文章

最新更新