【问题标题】:How to use getElementsByTagName for specific node in Minidom如何在 Minidom 中为特定节点使用 getElementsByTagName
【发布时间】:2020-11-24 08:21:16
【问题描述】:

我的 XML 看起来像这样

<TOPIC>
    <LIST>
        <Area>JKH</Area>
        <USED>
            <type id='123' />
            <type id='345' />
        </USED>
        <DEMAND>
            <type id='809' />
            <type id='321' />
        </DEMAND>
        <CLOSED>
            <type id='456' />
            <type id='765' />
        </CLOSED>
    </LIST>
</TOPIC>

这里我只想打印&lt;DEMAND&gt; 下的id。我试过下面的代码。

from xml.dom import minidom
root=minidom.parse('sample.xml')
tag=root.getElementsByTagName('type')
for i in tag: 
    print(i.getAttribute("id"))

但这是打印所有id 值,如下所示。

123
345
809
321
456
765

我怎样才能只得到&lt;DEMAND&gt; 标签下的809 和321。我可以在ElementTree 中给出路径,但不确定如何在getElementsByTagName 中给出路径?在 Minidom 中甚至有可能吗?

【问题讨论】:

    标签: python-3.x xml elementtree getelementsbytagname minidom


    【解决方案1】:
    for demand in root.getElementsByTagName('DEMAND'):
        for tp in demand.getElementsByTagName('type'):
            print(tp.getAttribute("id"))
    

    【讨论】:

    • 太棒了。这就是我要找的
    • @Avinash 需求越复杂,选择支持 XPath 的 DOM 实现(例如 ElementTree)就越有利。 XPath //DEMAND/type/@id 将替换此嵌套循环。
    • 这是一个非常有效的观点。我会记下来的。
    猜你喜欢
    • 2012-11-15
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2012-06-03
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多