Python ElementTree如何筛选包含insert子标签的XML标签并获取对应标签名
问题分析
你之前的代码无法得到输出的核心原因有两个:
<insert>是独立的XML子节点,不属于父节点的text属性内容,无法通过匹配父节点文本查找- Python原生等于判断不支持
*通配符,你写的'*<insert>*'会被识别为普通字符串,需要完全匹配才会触发判断,自然没有结果
实现代码
import xml.etree.ElementTree as ET # 解析XML文件,替换为你本地的XML文件路径 tree = ET.parse('test.xml') root = tree.getroot() # 用set存储符合条件的标签名,自动去重 target_tags = set() # 遍历XML中所有节点 for elem in root.iter(): # 检查当前节点的直接子节点中是否存在insert标签 has_insert = any(child.tag == 'insert' for child in elem) if has_insert: target_tags.add(elem.tag) # 转为列表使用 target_tag_list = list(target_tags) print(target_tag_list)
输出示例
针对你提供的XML片段,运行后输出结果为:
['PostalAddressText', 'PersonNameText']
如果需要同时输出标签的内容,可在if has_insert的判断分支中添加print(elem.tag, ET.tostring(elem, encoding='unicode'))即可。
内容的提问来源于stack exchange,提问作者gtrosh.ka
相关产品推荐
相关产品推荐

