<p>您可以使用<code>xml.etree.ElementTree</code>包将xml代码解析到树中,并按以下方式对其进行迭代:</p>
<pre><code># Official DOC:
# https://docs.python.org/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree
import xml.etree.ElementTree as ET
x = '''<?xml version="1.0"?>
<regs>
<reg regname="uid_v2" type="block_uid_v2_t" num="1" addr="0x4" incr="0x4"> </reg>
<reg regname="uid_v3" type="block_uid_v3_t" num="3" addr="0x4" incr="0x4"> </reg>
</regs>'''
# tree = ET.parse("some_file.xml")
tree = ET.fromstring(x) # I use a string here in this example
for child in tree:
print(child.tag, child.attrib)
</code></pre>
<p><code>child.attrib</code>是一个字典:您可以通过<code>child.attrib["type"]</code>简单地获得特定的属性<strong>类型</strong>。看看这个复制对于<a href="https://repl.it/@dahle/xml" rel="nofollow noreferrer">live example</a>。你知道吗</p>
<p><strong>编辑</strong>-根据以下评论中的要求:</p>
<pre><code># Get only the relevant nodes from the tree
for child in tree:
if "type" in child.attrib:
if child.attrib["type"] == "block_uid_v2_t":
print(child.tag, child.attrib)
# List comprehension to store all relevant nodes in a list
regs = [child.attrib for child in tree if ("type" in child.attrib and child.attrib["type"]=="block_uid_v2_t")]
# Store only 'regname' of relevant nodes
reg_ids = [child.attrib["regname"] for child in tree if ("type" in child.attrib and child.attrib["type"]=="block_uid_v2_t")]
</code></pre>