当前位置: 首页 > news >正文

【python+requests】告别繁琐XML解析!用xmltodict.parse像处理JSON一样轻松操作XML

告别繁琐XML解析!用xmltodict.parse像处理JSON一样轻松操作XML

本文介绍如何借助 xmltodict.parse() 方法,像处理 JSON 一样轻松读写 XML 内容。

在日常开发中,我们常常需要处理 XML 数据,无论是接口响应、配置文件还是数据存储格式。但 XML 解析通常需要借助 DOM 或 SAX 方式,代码写起来比较繁琐。

今天介绍一个 Python 神器:xmltodict,它的 parse 方法能快速将 XML 字符串转为 Python 字典,大大提升处理效率。


一、xmltodict.parse 是什么?

xmltodict.parse(res_text) 是 Python 第三方库 xmltodict 的核心方法,它的作用是将 XML 字符串解析成 Python 的字典(dict)或有序字典(OrderedDict),使我们可以像操作 JSON 一样轻松访问 XML 数据。

核心价值:

  • 省去繁琐解析:不再需要手动解析 XML 节点
  • 代码简洁明了:直接通过键名访问数据
  • 转换灵活:可轻松将 XML 转为 JSON 或其他格式

二、使用场景

场景类型描述
爬虫/接口返回处理微信、支付宝、SOAP、RSS 等返回的 XML 数据
配置文件读取解析 XML 格式的配置文件,如 Spring、Tomcat 配置
数据格式转换将 XML 转换为 JSON(先转 dict,再转 JSON 字符串)
快速数据提取避免写 XPath,直接通过字典键值获取数据

三、安装方法

使用前先安装库:

pip install xmltodict

四、基础用法与示例

示例XML:

<bookstore><book id="1"><title>Python编程</title><author>张三</author><price>59.9</price></book><book id="2"><title>深度学习</title><author>李四</author><price>78.5</price></book>
</bookstore>

转换为字典:

import xmltodictdata = xmltodict.parse(xml_text)
print(data['bookstore']['book'][0]['title'])  # 输出:Python编程
print(data['bookstore']['book'][1]['author']) # 输出:李四

五、实际应用示例:处理微信支付回调

from flask import request
import xmltodict@app.route('/wxpay/notify', methods=['POST'])
def wxpay_notify():xml_data = request.data.decode('utf-8')data = xmltodict.parse(xml_data)['xml']out_trade_no = data['out_trade_no']result_code = data['result_code']return '<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>'

六、参数详解(表格版)

参数名说明常用值
xml_input必填,XML 文本strbytes
encoding编码方式'utf-8'
process_namespaces是否处理命名空间True/False
force_list强制指定某些标签为列表('book', )
attr_prefix属性前缀'@'
disable_entities禁用外部实体(防XXE攻击)建议保持 True

七、常见转换规则(XML → Dict)

XML 片段转换后的字典结构
<book id="1">Python</book>{'book': {'@id': '1', '#text': 'Python'}}
<a><b>1</b><b>2</b></a>{'a': {'b': ['1', '2']}}
<x y="z"/>{'x': {'@y': 'z'}}

八、判断数据是 Dict 还是 JSON

判断方式代码结果类型
是否为字典type(obj) == dict<class 'dict'>
是否为 JSON 字符串type(obj) == str 且能通过 json.loads()<class 'str'>
import jsondata = xmltodict.parse(xml_string)
print(type(data))  # <class 'dict'>json_str = json.dumps(data)
print(type(json_str))  # <class 'str'>

九、完整转换流程:XML → Dict → JSON

步骤操作输入输出示例说明
原始数据XML 字符串<user><name>Tom</name></user>原始 XML 格式
xmltodict.parse()①的输出{'user': {'name': 'Tom'}}转为 Python 字典
json.dumps()②的输出{"user": {"name": "Tom"}}转为 JSON 字符串
import xmltodict, jsonxml_text = "<user><name>Tom</name></user>"
dict_data = xmltodict.parse(xml_text)
json_text = json.dumps(dict_data, ensure_ascii=False, indent=2)

十、总结

  • xmltodict.parse() 让我们能像处理 JSON 一样处理 XML,极大提升开发效率。
  • 适用于接口响应、配置解析、数据转换等多种场景。
  • 支持属性转换、强制列表、命名空间处理等高级功能。
  • 推荐在不需要复杂 XML schema 验证的场景中使用。

如果你经常需要处理 XML,不妨试试 xmltodict,它也许能成为你的开发利器。


文章示例代码基于 Python 3,xmltodict 库。实际使用请根据环境调整。

http://www.xdnf.cn/news/1418401.html

相关文章:

  • MySQL下载及安装(Windows 11)
  • 【图论】 Graph.jl 操作汇总
  • Qt Widgets 之 QAbstractButton
  • 每周读书与学习->认识性能测试工具JMeter
  • Kafka Connect + Streams 用到极致从 CDC 到流处理的一套落地方案
  • UCIE Specification详解(十二)
  • Git中批量恢复文件到之前提交状态
  • 收藏!VSCode 开发者工具快捷键大全
  • 在Linux系统中安装Jenkins(保姆级别)
  • Java:Could not resolve all files for configuration
  • Day42 Grad-CAM与Hook函数
  • UniApp + SignalR + Asp.net Core 做一个聊天IM,含emoji 表情包
  • 【Docker】Docker容器和镜像管理常用命令
  • 【2025ICCV】Vision Transformers 最新研究成果
  • 无题250901
  • GaussDB 集群故障cm_ctl: can‘t connect to cm_server
  • .Net程序员就业现状以及学习路线图(二)
  • oracle默认事务隔离级别
  • Windows神器,按键屏蔽
  • 深入理解 HTTP 与 HTTPS:区别以及 HTTPS 加密原理
  • 【 VPX638】基于KU115 FPGA+C6678 DSP的6U VPX双FMC接口通用信号处理平台
  • 配送算法19 Two Fast Heuristics for Online Order Dispatching
  • Objective-C 的坚毅与传承:在Swift时代下的不可替代性优雅草卓伊凡
  • Java面试宝典:Redis高并发高可用(主从复制、哨兵)
  • 【算法基础】链表
  • PowerPoint和WPS演示如何在放映PPT时用鼠标划重点
  • 趣味学RUST基础篇(String)
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(二十二)控件的可见、可用性
  • 如何从 STiROT 启动 STiROT_Appli_TrustZone LAT1556
  • JS闭包讲解