Python 元素树 myroot.findall()
Python ElementTree myroot.findall()
我正在使用带有 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 也位于正确的位置。
在此先感谢您的帮助,
您可以更新匹配表达式以在子树 (.//
) 中搜索具有 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'])
我正在使用带有 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 也位于正确的位置。
在此先感谢您的帮助,
您可以更新匹配表达式以在子树 (.//
) 中搜索具有 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'])