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

pandas.read_xml()解析无属性XML元素触发ValueError问题排查

问题原因与解决方案

报错原因

pandas.read_xml 默认优先解析目标元素的属性作为DataFrame的列。当<ELEM>没有属性、仅包含文本时,若只指定xpath为/ROOT/ELEM,pandas找不到可解析的属性,又未被明确告知要提取文本内容,就会抛出ValueError提示找不到节点或属性。

而当<ELEM>带有属性时,pandas会自动提取属性作为列,同时把元素的文本内容放到以元素名(ELEM)命名的列里,因此能正常生成DataFrame。

解决方案

要提取无属性元素的文本内容,需显式指定提取逻辑,以下两种方法均可实现:

方法1:直接提取文本节点

修改xpath指向元素的文本节点,并用names参数指定列名:

import pandas as pd

# 示例XML内容
xml_content = """
<ROOT>
    <ELEM>第一行文本</ELEM>
    <ELEM>第二行文本</ELEM>
    <ELEM>第三行文本</ELEM>
</ROOT>
"""

# 解析生成仅含文本列的DataFrame
df = pd.read_xml(xml_content, xpath='/ROOT/ELEM/text()', names=['ELEM'])
print(df)

方法2:使用elems_only参数(pandas 1.3+适用)

若不想修改xpath,可设置elems_only=True,强制pandas解析元素的文本内容而非属性:

df = pd.read_xml(xml_content, xpath='/ROOT/ELEM', elems_only=True, names=['ELEM'])

执行后即可得到仅包含<ELEM>文本内容的单列DataFrame。

内容的提问来源于stack exchange,提问作者Art Gertner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:55:00