【python实用小脚本-161】Python Json转Xml:告别手敲标签——一行命令把配置秒变可导入的XML

Python Json转Xml:告别手敲标签——一行命令把配置秒变可导入的XML

关键词:json转xml零依赖脚本自动生成标签小白友好跨平台


故事开场:周五下午,老板又甩来“配置翻译”任务

17:55,你正准备关机,老板在群里@你:“把客户给的 test-input.json 转成 XML,今晚接口联调要用。”
你打开文件,瞬间头大:嵌套的对象、数组、布尔值混成一锅粥。手敲 <tag>?估计得加班到凌晨。

你把同事刚发你的 json_to_xml.py 往命令行一扔——

python json_to_xml.py

3 秒后,test-output.xml 静静躺在桌面,标签层级分明,连 <?xml version="1.0"?> 都写好了。
这把“瑞士军刀”从此常驻你的 U 盘。


代码解析 1:读文件——先把 JSON 变成 Python 能“嚼”的东西

通俗解释
就像把一封英文信先翻译成中文再读,这一步让 Python 能把 JSON 内容当积木玩。

关键代码

with open("test-input.json", "r") as json_file:json_data = json.load(json_file)  # 把 JSON 字符串变成 Python 字典或列表

代码解析 2:拆积木——递归拆解每一层

通俗解释
JSON 像俄罗斯套娃,大盒子里还有小盒子。脚本一层层拆开:遇到盒子(对象/数组)就继续拆,遇到糖果(字符串/数字)就贴标签。

关键代码

def json_to_xml(json_obj, line_padding=""):result_list = []if isinstance(json_obj, dict):for key, value in json_obj.items():result_list.append(f"{line_padding}<{key}>")result_list.append(json_to_xml(value, line_padding + "  "))result_list.append(f"{line_padding}</{key}>")elif isinstance(json_obj, list):for element in json_obj:result_list.append(json_to_xml(element, line_padding))else:result_list.append(f"{line_padding}{json_obj}")return "\n".join(result_list)

代码解析 3:贴标签——给每一层自动加 <tag> 和缩进

通俗解释
拆到最底层时,脚本自动把键名变成标签名,把值放进标签中间,同时用两个空格缩进,让 XML 像楼梯一样好看。

关键代码

# 示例输出片段
"""
<person><name>Alice</name><age>30</age>
</person>
"""

代码解析 4:写文件——把结果存成 .xml

通俗解释
就像把整理好的笔记放进文件夹,这一步把字符串一次性写进文件,顺手加上 XML 文件头。

关键代码

xml_data_with_header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml_data
with open("test-output.xml", "w") as file:file.write(xml_data_with_header)

如果还想更厉害:两个 5 分钟扩展点子

1. 批量处理整个文件夹

给脚本加一个循环,让它一次吃下一整碗 JSON。

import glob
for json_path in glob.glob("*.json"):with open(json_path, "r") as f:data = json.load(f)xml_str = json_to_xml(data)save_xml_file(xml_str, json_path.replace(".json", ".xml"))

2. 30 秒套个图形界面

tkinter 做一个小窗口,拖文件就能转。

import tkinter as tk
from tkinter import filedialogroot = tk.Tk()
root.withdraw()  # 只弹出文件选择框
input_path = filedialog.askopenfilename(title="选 JSON")
with open(input_path, "r") as f:xml = json_to_xml(json.load(f))
save_xml_file(xml, input_path.replace(".json", ".xml"))

总结

你刚体验了一把“零门槛”自动化:把任何 JSON 文件扔给脚本,3 秒就能收获排版漂亮的 XML。它不需要安装额外库,只用系统自带 Python;加上两条简单扩展,还能批量、还能点点鼠标。下次再有人甩来配置,你就笑眯眯地双击脚本——下班前就能回家追剧。

源码获取

完整代码已开源,包含详细的注释文档:
🔗 [GitCode仓库] https://gitcode.com/laonong-1024/python-automation-scripts
📥 [备用下载] https://pan.quark.cn/s/654cf649e5a6 提取码:f5VG

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91002.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WisFile(文件整理工具) v1.2.19 免费版

下载&#xff1a;https://pan.quark.cn/s/db99b679229fWisFile是一款免费AI文件管理工具&#xff0c;可以在电脑本地运行。它专注于解决文件命名混乱、归类无序和手动整理耗时的问题。通过AI技术智能识别文件内容&#xff0c;支持批量重命名和智能分类归档功能&#xff0c;可自…

简历美容院:如何把“打杂经历“包装成“核心项目“?

简历美容院&#xff1a;如何把"打杂经历"包装成"核心项目"&#xff1f; 大家好&#xff0c;我是程序员小白条&#xff0c;今天来研究下简历包装的事&#xff0c;小白可以按我的包装流程走&#xff0c;可以分步骤进行包装&#xff0c;具体怎么进行可以看正文…

零基础-动手学深度学习-7.7 稠密连接网络(DenseNet)

ResNet极大地改变了如何参数化深层网络中函数的观点。 稠密连接网络&#xff08;DenseNet&#xff09;在某种程度上是ResNet的逻辑扩展。让我们先从数学上了解一下。 7.7.1. 从ResNet到DenseNet 7.7.2. 稠密块体 DenseNet使用了ResNet改良版的“批量规范化、激活和卷积”架构…

Marin说PCB之POC电路layout设计仿真案例---09

好消息&#xff0c;好消息&#xff0c;小编最爱的国漫凡人修仙传电视剧版本的终于可以看了&#xff0c;小编我推荐一波啊&#xff0c;感兴趣的道友们可以去某酷视频去追剧啊。 好了&#xff0c;咱们言归正传啊。本期的案例是这个月中旬我们组的测试大哥阿永去某田实验室去测试我…

论文阅读--射频电源在半导体领域的应用

《射频电源在半导体领域的应用》 论文信息&#xff1a;左政,冯国楠,李建慧,等.射频电源在半导体领域的应用[J].软件和集成电路,2025,(04):38-43.DOI:10.19609/j.cnki.cn10-1339/tn.2025.04.007. 一、射频电源的定义与分类 1.1 定义射频电源&#xff08;RF Power Supply&#xf…

绿算技术携手昇腾发布高性能全闪硬盘缓存设备,推动AI大模型降本增效

在数字化浪潮席卷全球的今天&#xff0c;人工智能已经成为推动企业创新与发展的重要力量。广东省绿算技术有限公司&#xff08;简称“绿算技术”&#xff09;紧跟时代步伐&#xff0c;基于华为昇腾AI大模型&#xff0c;推出了高性能全闪硬盘缓存设备&#xff0c;致力于为人工智…

HoloLens2系列讲解 - 06 基本操作

一、导入MRTK插件 1. 首先要新建一个项目,打开unity,新建一个project。 2. 导入MRTK包。 3. 点击 Mixed Reality Toolkit > Add to scene and Configure 添加MR场景配置文件。

Linux Vim 编辑器使用指南

Linux Vim 编辑器使用指南一、Vim 简介 Vim&#xff08;Vi IMproved&#xff09;是 Linux/Unix 系统中最流行的文本编辑器之一&#xff0c;它是 Vi 的增强版&#xff0c;支持多模式操作、语法高亮、插件扩展等特性&#xff0c;无需鼠标即可高效编辑文本。 二、核心工作模式 Vim…

运维笔记:破解 VMware 迁移难题

一、VMware 迁移前的准备与评估1.1 迁移场景与目标分析VMware 迁移常见场景包括&#xff1a;同平台升级&#xff1a;从 vSphere 6.7 迁移到 7.0/8.0&#xff08;硬件兼容、功能迭代&#xff09;跨平台迁移&#xff1a;VMware→KVM/Xen&#xff08;降低 licensing 成本&#xff…

cartographer 点云数据的预处理

目录 传感器数据的走向 体素滤波与之后的处理 3D情况下的激光雷达数据的预处理 初始位姿估计 位姿推测器的优缺点分析与总结 可能有问题的点 可能的改进建议 传感器数据的走向 传感器数据从CollatedTrajectoryBuilder类的HandleCollatedSensorData函数 传递GlobalTrajec…

基于数据挖掘的短视频点赞影响因素分析【LightGBM、XGBoost、随机森林、smote】

文章目录有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍总结每文一语有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 随着短视频行业的高速发展&#xff0c;尤其是以抖音为代表的平台不断壮大&…

Git 从入门到精通

Git 从入门到精通 涵盖了核心概念、常用命令、协作流程和高级技巧&#xff1a; 核心理念&#xff1a; 版本控制&#xff1a; 记录文件变化历史&#xff0c;可回溯到任意版本。分布式&#xff1a; 每个开发者拥有完整的仓库副本&#xff08;包括完整历史&#xff09;&#xf…

UE5多人MOBA+GAS 30、技能升级机制

文章目录前言技能的升级修改一下按键的输入判断是否满级在ASC中升级技能由角色的输入调用ASC的升级功能技能图标的优化技能升级材质&#xff0c;可升级技能图标的闪烁刷新技能升级后的蓝耗和CD&#xff0c;以及蓝不够时技能进入灰色状态修复伤害数字特效只显示3位数的问题前言 …

笔试——Day22

文章目录第一题题目思路代码第二题题目&#xff1a;思路代码第三题题目&#xff1a;思路代码第一题 题目 添加字符 思路 枚举所有字符串a与字符串b相对应的位置 代码 第二题 题目&#xff1a; 数组变换 思路 贪心 以最大值为基准元素&#xff0c;判断其他元素能否变为最…

__getattr__和 __getattribute__ 的用法

1、__getattr__ 的用法当实例对象访问一个不存在的属性时&#xff0c;会执行 __getattr__ 方法&#xff0c;如果属性存在的话&#xff0c;就不会执行案例 class Person:def __init__(self, name, age):self.name nameself.age agedef get_info(self):return f"name: {se…

信息化项目验收测试实战指南

在当今数字化转型的大背景下&#xff0c;信息化项目验收建设已成为企业提升运营效率、优化管理流程的重要手段。然而&#xff0c;很多企业在投入大量资金建设信息系统后&#xff0c;却常常面临系统上线后无法满足实际业务需求的困境。究其原因&#xff0c;往往是由于忽视了信息…

牛顿拉夫逊法PQ分解法计算潮流MATLAB程序计算模型。

牛顿拉夫逊法&PQ分解法计算潮流MATLAB程序计算模型。本程序模型基于MATLAB进行潮流计算&#xff0c;建议先安装matpower插件&#xff08;MATLAB中非常重要的潮流计算的插件&#xff09;。本程序可进行牛拉法和PQ分解法潮流计算的切换&#xff0c;对比潮流计算的结果。很适合…

Go语言实战案例-计算字符串编辑距离

在自然语言处理、拼写纠错、模糊搜索等场景中,我们经常需要衡量两个字符串之间的相似度。编辑距离(Edit Distance) 就是一个经典的衡量方式,它描述了将一个字符串转换为另一个字符串所需的最少操作次数。 一、问题定义:什么是编辑距离? 编辑距离,也称为 Levenshtein Di…

Java时间与日期常用方法

DateDate date new Date(); //获取当前时间 System.out.println(date.getYear() 1900); // 必须加上1900 System.out.println(date.getMonth() 1); // 0~11&#xff0c;必须加上1 System.out.println(date.getDate()); // 1~31&#xff0c;不能加1Ca…

【MySQL】从连接数据库开始:JDBC 编程入门指南

个人主页&#xff1a;♡喜欢做梦 欢迎 &#x1f44d;点赞 ➕关注 ❤️收藏 &#x1f4ac;评论 目录 &#x1f31f;一、什么是JDBC&#xff1f; &#x1f31f;二、JDBC编程的步骤 ✨使用步骤 ✨DriverManger &#x1f4ab;定义 &#x1f4ab;DriverManger的主要功能 …