def parse_xml(filename): """ 解析xml :param filename: :return: """ saved_name = filename.replace('.xml', '.json') # 获取已经处理好的文字映射 data = get_map('./files/template_map.json') # 读取xml文件 with open('tmp/' + filename, 'r', encoding='utf-8') as f: xml_content = f.read() # 找出xml中核心部分 res = re.findall('<GlyphOrder>(.*?)</GlyphOrder>', xml_content, re.S)[0] # 解析文字映射 change_res = re.findall('<GlyphID id=".*?" name="(.*?)"/>', res) final_res = {} # 映射匹配 for i in range(2, 603): tmpstr = 'glyph' + str(i) final_res[change_res[i]] = data[tmpstr] # 保存字典 with open('tmp/' + saved_name, 'w', encoding='utf-8') as f: json.dump(final_res, f, ensure_ascii=False)
def replace_json_text(self, json_text, file_map): """ 替换json文本,根据加密字体文件映射替换json加密文本 :param page_source: :param file_map: :return: """ for k_f, v_f in file_map.items(): font_map = get_map(v_f) for k, v in font_map.items(): key = str(k).replace('uni', '&#x') key = '\\"' + str(k_f) + '\\">' + key + ';' value = '\\"' + str(k_f) + '\\">' + v json_text = json_text.replace(key, value) return json_text
def replace_review_html(self, page_source, file_map): """ 替换html文本,根据加密字体文件映射替换page source加密代码 :param page_source: :param file_map: :return: """ for k_f, v_f in file_map.items(): font_map = get_map(v_f) for k, v in font_map.items(): key = str(k).replace('uni', '&#x') key = '"' + str(k) + '"><' value = '"' + str(k) + '">' + str(v) + '<' page_source = page_source.replace(key, value) return page_source