Python基礎-48-python批量修改xml文件實例

需求

將文件夾中xml文件的include、preview以及cylinder中的url都改爲相對路徑

層級目錄是一個文件夾包含很多子文件夾,子文件夾中有很多文件,其中包括xml文件,需要進行修改的就是此處的tour.xml

 

代碼部分

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")

執行結果

 

打開修改後的xml文件:

使用xml相關類修改成功後,原本xml文件中的註釋會清除,不知道啥原因,也未找到解決方法,歡迎大神指教~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章