在Python中使用minidom提取节点引用ID

在Python中使用minidom提取节点引用ID,python,xml,minidom,Python,Xml,Minidom,我在Python中使用minidom,我想搜索节点列表(book),对于属性“name”等于“statistics”的每个book节点,我想打印节点引用。下面是我要处理的XML文件的一个示例: <book id='123'> <name>statistics</name> </book> <book id='234'> <name>mathematics</name> </book>

我在Python中使用minidom,我想搜索节点列表(book),对于属性“name”等于“statistics”的每个book节点,我想打印节点引用。下面是我要处理的XML文件的一个示例:

<book id='123'>
    <name>statistics</name>
</book>

<book id='234'>
    <name>mathematics</name>
</book>

<book id='345'>
    <name>statistics</name>
</book>

关于如何实现这一点,您有什么想法吗?

遍历book元素,查看name节点,查看其统计信息是否正确。如果打印出book节点的属性,则id

import xml.dom.minidom
Document = "<books>\
            <book id='123'>\
                <name>statistics</name>\
            </book>\
            <book id='234'>\
                <name>mathematics</name>\
            </book>\
            <book id='345'>\
                <name>statistics</name>\
            </book></books>"

dom = xml.dom.minidom.parseString(Document)
for book in dom.getElementsByTagName("book"):
   node = book.getElementsByTagName("name")[0] 
   if node.firstChild.data.strip().lower() == "statistics":
        print int(book.getAttribute("id").strip())

遍历每个节点,测试该节点是否包含名称“statistics”,保存id。您已经选择了要使用的XML库,但在您的问题中没有演示它的任何用法。如果您发布有效的XML片段会更有帮助。这正是我试图做的,但我还没有成功保存id。您会知道如何做到这一点吗?类似这样的信息是通过以下方式获得的。例如,
book[./name/text()=“statistics”]/@id
。您必须使用支持
XPATH
的库。很遗憾,我的帖子缺少语法色彩。我做错了什么?
import xml.dom.minidom
Document = "<books>\
            <book id='123'>\
                <name>statistics</name>\
            </book>\
            <book id='234'>\
                <name>mathematics</name>\
            </book>\
            <book id='345'>\
                <name>statistics</name>\
            </book></books>"

dom = xml.dom.minidom.parseString(Document)
for book in dom.getElementsByTagName("book"):
   node = book.getElementsByTagName("name")[0] 
   if node.firstChild.data.strip().lower() == "statistics":
        print int(book.getAttribute("id").strip())
123
345