如何用Python提取XML文件中map标签的value属性值?
提取XML中
需求说明
需要从较长的XML文件中提取所有<map>标签的key和value属性,最终目标是生成所有value属性值的列表,示例值如下:
- [companyx.dm.ss.ply.zut/CV_item_info_title].[cooAD]
- [companyx.dm.ss.ply.code/CV_item_code].[AF_COLOR]
此前尝试用pandas读取XML未成功,无法识别key和value属性;使用etree.ElementTree也未实现需求,以下是可行的解决方案。
解决方案:使用Python标准库xml.etree.ElementTree
Python的xml.etree.ElementTree是处理XML的标准工具,能精准定位并提取目标标签的属性,无需额外安装依赖。
代码实现
import xml.etree.ElementTree as ET # 解析本地XML文件 tree = ET.parse("your_file.xml") root = tree.getroot() # 若处理XML字符串(比如你提供的样本片段),替换为以下代码: # xml_content = """你的XML完整字符串内容""" # root = ET.fromstring(xml_content) # 提取所有<map>标签的value属性 value_list = [] for map_tag in root.findall('.//map'): value = map_tag.get('value') if value: # 过滤无value属性的标签 value_list.append(value) # 输出结果 for item in value_list: print(item)
代码说明
root.findall('.//map'):通过XPath表达式递归查找XML中所有层级的<map>标签,不受父节点位置限制。map_tag.get('value'):获取当前<map>标签的value属性值,若标签无该属性则返回None,通过if value过滤无效项。- 最终
value_list即为所有符合要求的value属性值集合,可直接用于后续业务处理。
样本测试结果
将你提供的XML片段传入上述代码,会输出以下内容:
[companyx.dm.ss.ply.zut/CV_item_info_ind].[cooAD] [companyx.dm.ss.ply.zut/CV_item_info_title].[cooAD] [companyx.dm.ss.ply.code/CV_item_code].[AF_COLOR] [companyx.dm.ss.ply.code/CV_item_code].[AF_FCOCO] [companyx.dm.ss.ply.code/CV_item_code].[AF_GENDER] [companyx.dm.ss.ply.code/CV_item_code].[AF_GRID] [companyx.dm.ss.ply.code/CV_item_code].[AF_STYLE] [companyx.dm.ss.ply.zut/CV_item_info_ind].[AKTNR]
内容的提问来源于stack exchange,提问作者CNA
相关产品推荐
相关产品推荐

