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