使用DOM(Python)在XML元素中搜索特定文本

时间:2015-07-07 04:41:50

标签: python xml dom kodi

对于Python中的程序,我正在寻找一种方法来查找XML元素中的特定文本,并找出它是哪个节点号。

这是xml:

svg

当然我知道这里可能是节点号2,但xml文件可能更长。

这是我试过的方法,但我不能让它正常工作:

-<shortcut>
<label>33060</label>
<label2>Common Shortcut</label2>
</shortcut>

-<shortcut>
<label>Test</label>
</shortcut>

1 个答案:

答案 0 :(得分:1)

此工作示例演示了使用minidom模块*搜索包含特定文本的元素的一种可能方法:

from xml.dom.minidom import parseString

def getText(nodelist):
    rc = []
    for node in nodelist:
        if node.nodeType == node.TEXT_NODE:
            rc.append(node.data)
    return ''.join(rc)


xml = """<root>
<shortcut>
<label>33060</label>
<label2>Common Shortcut</label2>
</shortcut>
<shortcut>
<label>Test</label>
</shortcut>
</root>"""
xmldoc = parseString(xml)
labels = xmldoc.getElementsByTagName("label")
for label in labels:
    text = getText(label.childNodes)
    if text == "Test":
        print("node found : " + label.toprettyxml())
        break

输出

node found : <label>Test</label>

*)getText()功能取自this页。