Python元素树myroot.findall()

2024-10-03 13:21:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python ElementTree处理一个XML文件。 我的文件是这样的:

<a expr="bla" para="1"/>
<a expr="bla" para="1">
  <b expr="bli" para="2"/>
<a exp="bla" para="1"/>
...

我想打印expr,不管是a还是b。 应该是这样的:

expr = "bla"
expr = "bla"
expr = "bli"
expr = "bla"

我写了这段代码:

for type_tag in myroot.findall('a'):
    expression = type_tag.get('expr')
    print("expr = ", expression)

但我不知道如何改进它,使b也在正确的位置

提前感谢您的帮助


Tags: 文件代码infortagtypexmlexpression
1条回答
网友
1楼 · 发布于 2024-10-03 13:21:18

您可以更新匹配表达式以在子树(.//)中搜索具有expr属性([@expr])的所有元素(*

import xml.etree.ElementTree as ET

xml = '''
<root>
<a expr="bla" para="1"/>
<a expr="bla" para="1">
  <b expr="bli" para="2"/>
</a>
<a exp="bla" para="1"/>
</root>
'''
myroot = ET.fromstring(xml)

for e in myroot.findall(".//*[@expr]"):
    print(e.attrib['expr'])

相关问题 更多 >