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