如何用Python的ElementTree提取XML文件中的指定字段值?
解决Python提取XML中指定属性Field值的问题
我来帮你搞定这个问题!你的代码输出全是“Nothing”,核心原因是对XML结构的查找逻辑出错了——咱们先看你的XML结构:每个<Field>元素是通过Name属性来标识类型的(比如Name="Filename"),而不是存在一个名为<Filename>的子元素,所以你用each.find('.//Filename')根本找不到匹配的内容。
下面给你两种可行的修正方案:
方案一:用XPath直接筛选目标Field
这种方法最简洁,直接通过XPath表达式定位所有Name属性为Filename的<Field>元素:
import xml.etree.ElementTree as ET xml_file = 'C:/Users/ClientMD/Downloads/MC Librarytest.xml' tree = ET.parse(xml_file) root = tree.getroot() # 使用XPath筛选Name属性等于Filename的Field元素 for filename_field in root.findall(".//Field[@Name='Filename']"): print(filename_field.text)
方案二:遍历Item后判断Field属性
如果需要同时处理其他Field(比如Artist、Album),这种遍历判断的方式更灵活:
import xml.etree.ElementTree as ET xml_file = 'C:/Users/ClientMD/Downloads/MC Librarytest.xml' tree = ET.parse(xml_file) root = tree.getroot() # 先遍历每个Item节点 for item in root.findall('Item'): # 再遍历Item下的所有Field for field in item.findall('Field'): # 检查当前Field的Name属性是否为Filename if field.get('Name') == 'Filename': print(field.text)
运行任意一种代码,都会输出你想要的两个文件路径:
Y:\Styx\08 - Styx - Snowblind8. Snowblind.flac
Y:\David Gilmour\04 A Boat Lies Waiting.flac
内容的提问来源于stack exchange,提问作者Levy
相关产品推荐
相关产品推荐

