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

如何用Python获取XML文件中的属性值而非元素对象

解决Python读取XML节点属性值的问题

场景说明

假设你的XML结构类似:

<root>
  <vocation name="Warrior" />
  <vocation name="Mage" />
  <vocation name="Ranger" />
</root>

现有代码运行后输出元素对象(如<Element 'vocation' at ...>),用.text获取属性时触发AttributeError——这是因为.text用于提取节点内部文本内容,而非属性值。


解决方案

方法1:使用Python标准库xml.etree.ElementTree

直接通过元素对象的属性操作方法获取属性值:

方式A:用.get()方法(推荐,属性不存在时返回None,避免报错)

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse("your_file.xml")
root = tree.getroot()

# 遍历所有vocation节点,提取name属性
for vocation in root.findall("vocation"):
    print(vocation.get("name"))

方式B:访问attrib字典(属性不存在时会触发KeyError)

import xml.etree.ElementTree as ET

tree = ET.parse("your_file.xml")
root = tree.getroot()

for vocation in root.findall("vocation"):
    print(vocation.attrib["name"])

方法2:使用lxml库(支持XPath,适合复杂XML查询)

如果需要更灵活的节点查询,可使用lxml:

  1. 先安装库:
pip install lxml
  1. 代码示例:
from lxml import etree

tree = etree.parse("your_file.xml")
# 用XPath直接提取所有vocation节点的name属性
name_list = tree.xpath("//vocation/@name")

for name in name_list:
    print(name)

输出结果

两种方法都会得到你期望的输出:

Warrior
Mage
Ranger

内容的提问来源于stack exchange,提问作者kojtim kojim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:50:21