加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 23:31:39 所属栏目:百科 来源:网络整理
导读:我已经使用xml minidom从xml文件中获取一些数据但无法获得所需的结果…尝试从x2 minidom相关的此站点的许多代码但是失败..这是我的示例xml文件.. computer parts textRequired/text /parts parts textRequired/text parts text?Not Required/text /parts par
我已经使用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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读