50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
|
import json
|
||
|
import os.path
|
||
|
import xml.etree.ElementTree as ET
|
||
|
|
||
|
from scripts.task import Task
|
||
|
from utils.logger_utils import app_logger
|
||
|
|
||
|
|
||
|
def batch_update_xml_resources(file_path, updates_dict):
|
||
|
# 解析XML文件
|
||
|
tree = ET.parse(file_path)
|
||
|
root = tree.getroot()
|
||
|
updated_count = 0 # 遍历字典中的每个key-value对
|
||
|
for key, new_value in updates_dict.items():
|
||
|
# 查找指定key的元素
|
||
|
for elem in root.findall(f".//string[@name='{key}']"):
|
||
|
# 修改元素内容
|
||
|
elem.text = new_value.replace("'", "\\'")
|
||
|
print(f"已更新 key: {key} 的值为: {elem.text}")
|
||
|
updated_count += 1
|
||
|
break
|
||
|
else:
|
||
|
print(f"未找到 key: {key}")
|
||
|
|
||
|
# 美化并保存修改
|
||
|
tree.write(file_path, encoding='utf-8', xml_declaration=True)
|
||
|
return updated_count
|
||
|
|
||
|
|
||
|
class ProjectResString(Task):
|
||
|
|
||
|
def update_res(self, string_path: str, res: dict[str, str]):
|
||
|
if os.path.exists(string_path):
|
||
|
batch_update_xml_resources(string_path, res)
|
||
|
return
|
||
|
|
||
|
app_logger().debug("路径不存,不操作了,后续可以给他创建出来:" + string_path + "\t" + json.dumps(res, indent=4))
|
||
|
|
||
|
def execute(self):
|
||
|
for key in self.context.string.keys():
|
||
|
launcher = key.replace('base', '')
|
||
|
if launcher:
|
||
|
launcher = "values-" + launcher
|
||
|
else:
|
||
|
launcher = "values"
|
||
|
|
||
|
path = f"launcher-game/res/{launcher}/strings.xml"
|
||
|
self.update_res(os.path.join(self.context.temp_project_path, path), self.context.string[key])
|
||
|
pass
|