色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

python實現xml轉json文件的示例代碼

瀏覽:2日期:2022-06-30 18:10:12

使用了Python的 xml.etree.ElementTree 庫

xml.etree.ElementTree 庫簡介

xml.etree.ElementTree模塊實現了一個簡單而高效的API用于解析和創建XML數據。xml.etree.ElementTree模塊對于惡意構造的數據是不安全的。如果您需要解析不受信任或未經驗證的數據,請參閱XML漏洞。參考文獻:https://docs.python.org/3.6/library/xml.etree.elementtree.html

from xml.etree import ElementTreeimport jsonLISTTYPE = 1DICTTYPE = 0def getDictResults(res_dicts, iters): result_dicts = {} for iter in iters.getchildren(): iterxml(iter, result_dicts) if result_dicts: res_dicts[iters.tag].update(result_dicts)def getListResults(res_dicts, iters): result_lists = [] for iter in iters.getchildren(): result_dicts = {} iterxml(iter, result_dicts) result_lists.append(result_dicts.copy()) del(result_dicts) if result_lists: if len(res_dicts[iters.tag].items()) == 0: res_dicts[iters.tag] = result_lists.copy() else: for resobj in result_lists:resobjkey = list(resobj.keys())[0]if res_dicts[iters.tag].get(resobjkey) == None: res_dicts[iters.tag].update(resobj)else: if type(res_dicts[iters.tag][resobjkey]) == list: res_dicts[iters.tag][resobjkey].append(resobj[resobjkey].copy()) else: old_value = res_dicts[iters.tag][resobjkey] res_dicts[iters.tag][resobjkey] = [] res_dicts[iters.tag][resobjkey].append(old_value) res_dicts[iters.tag][resobjkey].append(resobj[resobjkey].copy()) del(result_lists)def checkxmlchildrentype(iters): taglist = [] for iter in iters.getchildren(): taglist.append(iter.tag) if len(set(taglist)) == len(taglist): return DICTTYPE else: return LISTTYPEdef getResults(res_dicts, iters): if checkxmlchildrentype(iters): return getListResults(res_dicts, iters) else: return getDictResults(res_dicts, iters)#@res_dicts {}def iterxml(iter, res_dicts): res_dicts[iter.tag] = {} if iter.attrib: for k,v in dict(iter.attrib).items(): res_dicts[iter.tag].update({k : v}) if iter.text is not None and iter.text.strip() != '': res_dicts[iter.tag].update({'__XmlTagText__' : iter.text.strip()}) if iter.getchildren(): getResults(res_dicts, iter)def parserxmltojson(file_path): try: tree = ElementTree.parse(file_path) except Exception as e: #multi-byte encodings are not supported 把字符集改成utf-8就可以 #encoding specified in XML declaration is incorrect xml encoding標識和文件的字符集不同 #syntax error 語法錯誤,亂碼等 #not well-formed (invalid token) 編輯器點擊后字符集被修改成ASCII等,或者文件本身字符集和xml encoding不相同 print('Parser {} Error, Errmsg: {}'.format(file_path, e)) return '' if tree is None: print('{} is None.'.format(file_path)) return '' root = tree.getroot() report = {} iterxml(root, report) #return getDictResults(root) return reportif __name__ == '__main__': jsonret = parserxmltojson('test.xml') with open('test.json', 'w', encoding='utf-8') as fd: fd.write(json.dumps(jsonret, ensure_ascii=False, indent=4)) print(json.dumps(jsonret, ensure_ascii=False, indent=4))

以上就是python實現xml轉json文件的示例代碼的詳細內容,更多關于python實現xml轉json文件的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 日韩欧美印度一级毛片 | 亚洲在线视频播放 | 风流慈禧一级毛片在线播放 | 成人精品视频一区二区三区 | 97视频免费观看 | 亚洲欧美一区二区久久 | 免费一级大毛片a一观看不卡 | 日本特一级毛片免费视频 | 韩国一级片在线观看 | 怡红院免费的全部视频国产a | 88av视频在线观看 | 特黄特黄一级高清免费大片 | 免费观看三级毛片 | 手机看片久久青草福利盒子 | 亚洲 欧美 日韩 在线 中文字幕 | 99久久伊人一区二区yy5099 | 欧美日韩一区二区三区久久 | 国产不卡影院 | 成人欧美视频在线观看 | 黄色毛片视频在线观看 | 亚洲爱爱天堂 | 国产成人久久777777 | 亚洲欧洲精品国产二码 | 久久久久久久久久久大尺度免费视频 | 日本男人的天堂 | 成人观看视频又黄又免费 | 亚洲加勒比久久88色综合一区 | 免费午夜不卡毛片 | 欧美成人三级网站在线观看 | 久久国产精品久久久 | 亚洲成a人不卡在线观看 | 精品欧美一区二区精品久久 | 一区二区网站 | 欧美一区二区三区免费高 | 一级黄色毛片播放 | 久久频这里精品香蕉久久 | 91香蕉视频网 | 成人看的午夜免费毛片 | 精品99视频 | 成年人视频免费网站 | 国产在视频线精品视频www666 |