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

含嵌套节点的XML解析为DataFrame时内容丢失的问题排查

XML解析为DataFrame时丢失节点文本的问题解决

问题场景

现有XML文件内容如下:

<root>
    <epig>
    string1
    <tit>string2</tit>
    string3
    </epig>
</root>

使用以下代码尝试解析为DataFrame:

import pandas as pd
dftext = pd.read_xml("filename.xml", xpath='root/epig')

当前输出的DataFrame仅保留了string1和string2,string3丢失:

epigtit
string1string2

期望输出为合并string1和string3的结果:

epigtit
string1+string3string2

问题原因

pd.read_xml默认解析节点内容时,若节点下包含子节点(如这里的<tit>),只会提取子节点之前的第一个文本片段,因此epig节点中tit之后的string3被忽略了。

解决办法

可以通过直接操作XML树来合并节点下的所有文本片段,再构造DataFrame:

from lxml import etree
import pandas as pd

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

# 遍历epig节点,提取并合并文本
result = []
for epig_node in root.findall('epig'):
    # 提取epig下所有非空文本,清理空格后用+连接
    epig_content = '+'.join([text.strip() for text in epig_node.xpath('./text()') if text.strip()])
    # 提取tit节点的文本
    tit_content = epig_node.find('tit').text.strip()
    result.append({'epig': epig_content, 'tit': tit_content})

# 转换为DataFrame
df = pd.DataFrame(result)

执行后即可得到期望的DataFrame结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:02:52