新闻中心

Python如何将字典(dict)转换为XML_Python将字典转换为XML方法

2025-11-06
浏览次数:
返回列表
答案:Python使用xml.etree.ElementTree可将字典转为XML,通过递归函数处理嵌套结构,支持文本、列表及属性,结合minidom可美化输出格式。

python如何将字典(dict)转换为xml_python将字典转换为xml方法

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)

输出结果类似:

Alice30Beijingreadingswimming

处理属性和文本内容

如果需要在XML标签中添加属性,可以在字典中约定特殊标记,比如以@开头表示属性,#text表示文本内容。

刺鸟创客 刺鸟创客

一款专业高效稳定的AI内容创作平台

刺鸟创客 110 查看详情 刺鸟创客

例如:

data = { 'person': { '@id': '123', '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地址的几种方法 

搜索