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

xml.etree.ElementTree如何直接解析字符串/缓冲区形式的XML

Python3 标准库直接解析内存中XML字符串/缓冲区的实现方案

不需要写入临时文件走磁盘IO,xml.etree.ElementTree原生支持内存内容解析,你之前遗漏了对应的接口:

  • 方法1:使用fromstring()直接解析字符串,返回值为XML根节点对象,适合简单解析场景
import xml.etree.ElementTree as ET

# xmlbuffer 为接口返回的XML格式内容,同时支持str、bytes两种类型输入
xmlbuffer = b"""<?xml version="1.0" encoding="UTF-8"?>
<site>
    <page id="home">首页</page>
</site>"""
root = ET.fromstring(xmlbuffer)
# 后续正常遍历、查询节点即可
print(root.findtext("./page"))
  • 方法2:如果你需要和parse()方法完全一致的返回值(ElementTree对象,支持后续write等完整操作),可以借助标准库io模块把内存缓冲区包装为类文件对象传入,全程无磁盘读写:
import io
import xml.etree.ElementTree as ET

# 输入为str类型XML时用StringIO包装
tree = ET.parse(io.StringIO(xml_str_buffer))
# 输入为bytes类型XML(比如HTTP请求库直接返回的二进制响应内容)时用BytesIO包装
# tree = ET.parse(io.BytesIO(xml_bytes_buffer))

root = tree.getroot()

注意:如果XML响应带明确编码声明,优先直接传入bytes类型内容解析,避免手动解码导致的编码匹配错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:39:38