You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ElementTree中迭代多个匹配元素而非仅首个匹配元素

解决ElementTree匹配多XML标签的问题

你的代码里root.iter('PROCESSING_LEVEL' or 'processingLevel')的写法存在逻辑错误——Python中只要第一个字符串非空,or运算就会直接返回它,所以iter只会遍历其中一个标签,不会同时处理两个不同大小写的版本。

下面两种方法可以解决这个问题,遍历所有匹配的标签:

方法1:遍历标签名列表

把需要匹配的标签名放进列表,逐个调用iter遍历:

tree = ET.parse(filepath)
root: Element = tree.getroot()

# 定义所有要匹配的目标标签
target_tags = ['PROCESSING_LEVEL', 'processingLevel']

for tag in target_tags:
    for processing_level in root.iter(tag):
        print(f'Processing level: {processing_level.text}')
        text.insert('1.0', processing_level.text + '\n')
        text2.insert('1.0', processing_level.text + '\n')

方法2:使用XPath表达式

ElementTree支持XPath,用|运算符同时匹配多个标签:

tree = ET.parse(filepath)
root: Element = tree.getroot()

# 通过XPath匹配两个不同大小写的标签
for processing_level in root.findall('.//PROCESSING_LEVEL | .//processingLevel'):
    print(f'Processing level: {processing_level.text}')
    text.insert('1.0', processing_level.text + '\n')
    text2.insert('1.0', processing_level.text + '\n')

这两种方式都能提取所有符合条件的标签内容,不会只处理首个匹配项。

内容的提问来源于stack exchange,提问作者Kamil X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:05:14