Python XmlTool
XML To Xlsx
import xml.etree.ElementTree as ET
import re
import pandas as pd
def main():
tree = ET.parse("in/strings.xml")
root = tree.getroot()
patternKey = re.compile(r"\: \'(.+?)\'")
data_list = []
for child in root:
data = ["", ""]
attrib = str(child.attrib)
valueStr = child.text
keyStr = patternKey.search(attrib).group(1)
data[0] = keyStr
data[1] = valueStr
data_list.append(data)
# 数据读出
data = pd.DataFrame(data_list)
# 保存为xls格式
data.to_excel('dataZN.xls', encoding='utf-8')
class Bean:
def __init__(self, key, value):
self.key = key
self.value = value
if __name__ == "__main__":
main()
Xlsx To XML
import xlrd
import json
import pymysql
def main():
# list = {'cs', 'de', 'en', 'es', 'fr', 'it', 'ja', 'ko', 'pl', 'pt', 'ru', 'uk', 'zh'}
list = {'pl'}
list = {'nl','sv'}
returnData = {}
db = pymysql.connect(host="localhost", user="root", password="root", db="oclean")
cursor = db.cursor()
for item in list:
print("item = " + item)
# 读取Excel文件
data = xlrd.open_workbook('in/oclean_t_language_hl.xls')
table = data.sheets()[0]
# 读取excel第一行数据
rowstag = table.row_values(0)
nrows = table.nrows
f = open("./out/string_" + item + ".xml", "w", encoding='utf8')
f2 = open("./out/string_error_" + item + ".xml", "w", encoding='utf8')
# f.write("<resources>\n")
for i in range(1, nrows):
# 将字段名和excel数据存储为字典形式,并转换为json格式
returnData[i] = json.dumps(dict(zip(rowstag, table.row_values(i))))
# 通过编解码还原数据
returnData[i] = json.loads(returnData[i])
valueStr = returnData[i][item]
zh = returnData[i]["zh"]
sql = "SELECT keyId FROM t_language where zh= '%s' " % zh
cursor.execute(sql)
results = cursor.fetchall()
if len(results) == 0:
# 没有匹配上
print("results = " )
f2.write("<string name='" + str(zh + "'>" + str(valueStr.strip() + "</string>\n")))
for row in results:
print(row)
print("zh = " + zh)
print("valueStr = " + valueStr)
f.write("<string name='" + str(row[0] + "'>" + str(valueStr.strip() + "</string>\n")))
f.close()
f2.close()
print("结束")
if __name__ == "__main__":
main()
XML To DB
import xml.etree.ElementTree as ET
import re
import pymysql
import os
from pymysql.converters import escape_string
def main():
db = pymysql.connect(host="xx.xx.xx.xx", user="xxx", password="xxx", db="YourDbName")
cursor = db.cursor(B
path = 'D:\\Codes\\rc\\main\\res\\'
sql = 'truncate table t_language'
cursor.execute(sql)
db.commit()
for file_name in os.listdir(path):
if "values-" not in file_name:
continue
if "night" in file_name:
continue
print(">>> " + file_name)
item = str(file_name.replace('values-', '').replace('-', '_'))
tree = ET.parse(path + file_name + "/strings.xml")
root = tree.getroot()
patternKey = re.compile(r"\: \'(.+?)\'")
for child in root:
attrib = str(child.attrib)
valueStr = child.text
keyStr = patternKey.search(attrib).group(1)
# print("keyStr ='%s' " % keyStr)
try:
sql = "SELECT * FROM t_language WHERE keyId = '%s'" % keyStr
cursor.execute(sql)
results = cursor.fetchone()
if results:
# print("更新数据" + keyStr)
sql = "UPDATE t_language SET %s = '%s' WHERE keyId ='%s'" % (item, escape_string(valueStr), keyStr)
# print(sql)
cursor.execute(sql)
db.commit()
else:
# print("插入数据")
sql = "INSERT INTO t_language(keyId,%s) VALUES ('%s', '%s')" % (
item, keyStr, escape_string(valueStr))
# print(sql)
cursor.execute(sql)
db.commit()
except Exception as e:
print("出现如下异常'%s'" % e)
return
# 关闭数据库连接
db.close()
print("结束")
if __name__ == "__main__":
main()
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!
浙公网安备 33010602011771号