用python将xml文件转换为json文件
将xml文件转换为json文件,同时保持相同的目录结构。
·
要求:
源文件目录描述:software文件夹下面有4个文件夹,分别为:1、2、3、4,
1里面有3个文件夹,分别为1、2、3,每个文件夹下面分别有xml文件
2里面有4个文件夹,分别为1、2、3、4,每个文件夹下面分别有xml文件
3里面有2个文件夹,分别为1、2,每个文件夹下面分别有xml文件
4里面有1个文件夹,为1,文件夹下面分别有xml文件
要求保存的json文件的文件目录与源文件目录一致
请给出对应的python代码。
为了满足需求,编写一个Python脚本来递归地遍历software文件夹及其所有子文件夹,查找XML文件,并将它们转换为JSON文件,同时保持相同的目录结构。
import os
import xml.etree.ElementTree as ET
import json
# 指定包含XML文件的根目录
root_directory = 'path_to_software_directory'
# 指定保存JSON文件的根目录
json_root_directory = 'path_to_save_json_files'
# 确保JSON保存根目录存在
if not os.path.exists(json_root_directory):
os.makedirs(json_root_directory)
# 将XML数据转换为字典
def xml_to_dict(element):
child_data = {}
for child in element:
child_data[child.tag] = xml_to_dict(child)
text = element.text
if text:
text = text.strip()
if child_data or text:
return child_data if child_data else text
return None
# 递归遍历目录并转换XML文件
def convert_xml_to_json (dir_path, json_dir_path):
for filename in os.listdir(dir_path):
file_path = os.path.join(dir_path, filename)
# 如果是文件夹,则递归调用
if os.path.isdir(file_path):
json_sub_dir_path = os.path.join(json_dir_path, filename)
if not os.path.exists(json_sub_dir_path):
os.makedirs(json_sub_dir_path)
convert_xml_to_json(file_path, json_sub_dir_path)
# 如果是XML文件,则进行转换
elif filename.endswith('.xml'):
# 解析XML文件
tree = ET.parse(file_path)
root = tree.getroot()
# 转换根元素
data_dict = xml_to_dict(root)
# 创建JSON文件名
json_file_path = os.path.join(json_dir_path, f"{os.path.splitext(filename)[0]}.json")
# 将字典转换为JSON格式的字符串
json_data = json.dumps(data_dict, indent=4)
# 将JSON字符串写入文件
with open(json_file_path, 'w') as json_file:
json_file.write(json_data)
# 开始转换
convert_xml_to_json(root_directory, json_root_directory)
print(f"所有XML文件已转换为JSON文件,并保存在:{json_root_directory}")
请确保将path_to_software_directory替换为software文件夹的实际路径,将path_to_save_json_files替换为保存JSON文件的根目录的实际路径。
该脚本会递归地遍历software目录及其所有子目录,查找XML文件,并将每个XML文件转换为JSON文件。转换后的JSON文件将保存在与源XML文件相同的位置,相对于新的根目录json_root_directory。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)