新闻中心
Python如何将字典(dict)转换为XML_Python将字典转换为XML方法
答案:Python使用xml.etree.ElementTree可将字典转为XML,通过递归函数处理嵌套结构,支持文本、列表及属性,结合minidom可美化输出格式。

Python将字典(dict)转换为XML,可以通过标准库xml.etree.ElementTree来实现。这个方法灵活且无需安装第三方包,适合大多数基础场景。
使用xml.etree.ElementTree生成XML
ElementTree是Python内置的XML处理模块,可以方便地从字典构建XML结构。
以下是一个递归函数,用于将嵌套字典转换为XML:
def dict_to_xml(tag, data): elem = Element(tag) if isinstance(data, dict): for key, val in data.items(): child = dict_to_xml(key, val) elem.append(child) elif isinstance(data, list): for item in data: child = dict_to_xml('item', item) elem.append(child) else: elem.text = str(data) return elem使用示例:
from xml.etree.ElementTree import Element, tostring data = { 'person': { 'name': 'Alice', 'age': 30, 'city': 'Beijing', 'hobbies': ['reading', 'swimming'] } } root = dict_to_xml('root', data) xml_str = tostring(root, encoding='unicode') print(xml_str)输出结果类似:
处理属性和文本内容
如果需要在XML标签中添加属性,可以在字典中约定特殊标记,比如以@开头表示属性,#text表示文本内容。
刺鸟创客
一款专业高效稳定的AI内容创作平台
110
查看详情
例如:
data = { 'person': { '@id': '12
3',
'name': {'@lang': 'zh', '#text': '张三'},
'age': 25
}
}
修改函数支持属性解析:
def dict_to_xml_with_attr(tag, data): elem = Element(tag) if isinstance(data, dict): for key, val in data.items(): if key.startswith('@'): elem.set(key[1:], str(val)) elif key == '#text': elem.text = str(val) else: child = dict_to_xml_with_attr(key, val) elem.append(child) elif isinstance(data, list): for item in data: child = dict_to_xml_with_attr('item', item) elem.append(child) else: elem.text = str(data) return elem美化输出格式
默认的tostring()输出是紧凑型。如需换行缩进,可使用第三方库xml.dom.minidom美化:
from xml.dom import minidom rough_string = tostring(root, encoding='unicode') reparsed = minidom.parseString(rough_string) print(reparsed.toprettyxml(indent=" "))这样输出的XML会自动换行并缩进,更易读。
基本上就这些。用ElementTree手动构造是控制力最强的方式,适合定制化需求。若追求简洁,也可考虑使用dicttoxml第三方库(需pip安装),但核心原理一致。以上就是Python如何将字典(dict)转换为XML_Python将字典转换为XML方法的详细内容,更多请关注其它相关文章!
# 如何用
# 江西seo推广服务公司
# 微网站建设开发的区别
# 小宁seo技术教程
# 二七区网站搭建优化
# 互联网营销推广课
# 珙县网站建设
# 巩义网站优化选哪家
# 新站seo必做
# 天门网络营销推广公司
# 机加工网站建设
# 是一个
# 换行
# 它比
# python
# 如何使用
# 遍历
# 第三方
# 如何将
# 转换为
# 递归
# pip安装
# 标准库
# xml处理
# 递归函数
# app
# xml
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
c++如何使用折叠表达式(Fold Expressions)_c++17可变参数模板新技巧
葱吃多了会怎样 葱吃多了会伤胃吗
快手网页版在线登录 快手网页版官网入口快速访问
狙击外星人小游戏开始_狙击外星人小游戏立即开始
QQ网页版官方账号入口 QQ网页版网页版登录指南
C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言
J*a递归快速排序中静态变量导致数据累积问题的解决方案
德邦快递查询平台 德邦快递物流信息查询入口
小米Civi 4录制视频过暗_小米Civi 4亮度优化
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
Composer中的^和~符号代表什么_精通Composer版本号语义化约束
自定义Bag-of-Words实现:处理带负号的词汇权重
ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接
妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画
《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南
探索高级语言到C/C++的转译路径:以Go为例及内存管理策略
CSS图片焦点样式实现教程:理解与应用tabindex属性
反效果?《战地6》免费试玩开启后玩家数不升反降
Lar*el递归关系中排除子孙节点的策略
小红书网页版入口链接分享 小红书官网直接进
在J*a中如何开发简易电子商务商品管理系统_商品管理系统项目实战解析
React中useState与局部变量:理解组件状态管理与渲染机制
Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践
PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符
HTML元素状态管理:根据DIV内容动态启用/禁用按钮
Spyder启动失败:字体文件权限拒绝错误解决方案
php源码怎么看淘宝客系统_看php源码淘宝客系统技巧
Django表单验证失败时保留用户输入数据的最佳实践
126邮箱网页版官方入口 126邮箱账号在线登录平台
将HTML动态表格多行数据保存到Google Sheet的教程
怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】
百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案
格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施
vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧
Steam官网入口直达 Steam注册及登录步骤
html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】
C++如何解决segmentation fault_C++段错误调试与原因分析
深入理解J*aScript中的B样条曲线与节点向量生成
如何在Python中使用Optional类型处理可变对象并避免Pylint警告
Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项
顺丰国际快递查询 国际件官方查询入口
知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法
BetterDiscord插件中安全更新用户简介的实践指南
Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区
PyTorch模型训练效果不佳?深入剖析常见错误与调试技巧
一加Ace 6T实拍样张首次公布!李杰:主摄实力完全看齐4K档性能旗舰
React/Next.js中实现列表项的动态选择与移动
电脑IP地址怎么查 查看本机IP地址的几种方法


2025-11-06
浏览次数:次
返回列表