Python脚本-1-python批量修改xml文件实例

需求

将文件夹中xml文件的include、preview以及cylinder中的url都改为相对路径

Python脚本-1-python批量修改xml文件实例_第1张图片

层级目录是一个文件夹包含很多子文件夹,子文件夹中有很多文件,其中包括xml文件,需要进行修改的就是此处的tour.xml

Python脚本-1-python批量修改xml文件实例_第2张图片

 

代码部分

import os
import xml.etree.ElementTree as ET

def get_xml(path):
    """
    遍历文件夹,获取每个文件夹下的xml文件,
    :param path: 传递文件夹所在路径
    :return: 返回一个xml_list(每个xml的绝对路径,用于后面解析xml文件)
    """
    xml_list = []
    files = os.listdir(path) # 路径下所有的文件夹

    for file_datas in files:  # 遍历文件夹
        # print(file_datas)
        file_path = "\\"+file_datas  # 拼接路径
        file_data = os.listdir(path+file_path)  # 每个文件夹下的所有文件目录
        for xml_file in file_data:  # 遍历目录,为xml文件的加入到xml列表中去
            if xml_file.endswith("xml"):
                xml_file_path = path+file_path+"\\"+xml_file  # 拼接最终的xml绝对路径
                xml_list.append(xml_file_path)
    return xml_list

def update_xml(path):
    """
    修改每个xml文件
    :param path: 传递文件夹所在路径
    :return:
    """
    xml_list = get_xml(path) # 获取xml_list
    for xml_file_path in xml_list: # 遍历获取到的xml文件并修改
        # print(xml_file_path)

        # 1.解析xml文件
        tree = ET.parse(xml_file_path)
        root = tree.getroot()

        # 2.得到新的include的url为../skin/defaultskin.xml和../skin/flatpano_setup.xml
        for include in root.findall("include"):
            include_url = include.get("url") # 获取url的value
            include_new_url = "../" + include_url # 定义新的url内容
            include.set("url", include_new_url)  # 修改inclue元素的url为新的url
            # print(include_new_url)

        # 3.得到新的preview的url为preview.jpg
        preview = root.findall("preview")[0]
        preview_url = preview.get("url") # 获取url的value
        preview_new_url = preview_url.split("/")[1] # 字符串分割截取
        preview.set("url", preview_new_url)  # 修改preview元素的url为新的url
        # print(preview_new_url)

        # 4.得到新的cylinder的url为l4/%v/l4_%v_%h.jpg格式
        # root.findall("image/level/cylinder")可以替换为root.iter("cylinder")
        for cylinder in root.findall("image/level/cylinder"):
            cylinder_url = cylinder.get("url") # 获取url的value
            cylinder_new_url = cylinder_url.split(".tiles/")[1] # 字符串分割截取
            cylinder.set("url", cylinder_new_url) # 修改cylinder元素的url为新的url
            # print(cylinder_new_url)
        tree.write(xml_file_path,encoding="utf-8",xml_declaration=True)
        print("修改成功")

if __name__ == '__main__':

    update_xml("C:\\Users\\PC\\Desktop\\rubbingTile")

执行结果

Python脚本-1-python批量修改xml文件实例_第3张图片

 

打开修改后的xml文件:

Python脚本-1-python批量修改xml文件实例_第4张图片

使用xml相关类修改成功后,原本xml文件中的注释会清除,不知道啥原因,也未找到解决方法,欢迎大神指教~~~

你可能感兴趣的:(Python脚本)