亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

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 編程
相關文章:
主站蜘蛛池模板: 成人一a毛片免费视频 | 免费欧美日韩 | 国产精品久久一区一区 | 国产高清精品一区 | 99精品视频一区在线视频免费观看 | 免费看色视频 | 国产精品自在欧美一区 | 香蕉视频免费在线看 | 三级a黄| 免费艹逼视频 | 午夜淫片 | 年轻人免费看的高清www | 看全色黄大色黄大片色黄看的 | 亚洲精品第三页 | 国产精品卡哇伊小可爱在线观看 | 三级黄色a| 免费网站看v片在线观看 | 另类综合视频 | 窝窝午夜精品一区二区 | 久久香蕉国产线看观看式 | 人人澡人人澡碰人人看软件 | 日本一级特黄大一片免 | 日韩欧美亚洲国产一区二区三区 | 国产精品 主播精选 网红 | 欧美精品a毛片免费观看 | 伊人久久精品午夜 | 亚洲一级网站 | 午夜羞羞视频在线观看 | 1024.1024亚洲 国产 图片 1024cao社区榴地址一地址二 | 日韩特黄特色大片免费视频 | 99国产精品九九视频免费看 | 国产第二页 | 美国一级片免费看 | 亚洲第三十七页 | 日本久久草 | 在线亚洲播放 | 小明免费| 免费的很黄很色的床小视频 | 亚洲欧洲毛片 | 国产特黄特色的大片观看免费视频 | 韩国黄色一级毛片 |