[問題] xml樹狀結構過深的問題

看板Python作者 (樹枝擺擺)時間7年前 (2018/07/26 13:07), 7年前編輯推噓0(001)
留言1則, 1人參與, 7年前最新討論串1/1
大家好,想請問如何將具多層巢狀結構的xml扁平化的方法 以下是我想要解析的xml檔 <?xml version="1.0" encoding="utf-8"?> <level_1> <level_2> <level_3 A="x" B="y" C="z"> <level_4 E="0" F="1" G="64"> <level_5 H="S" I="30"></level_5> <level_5 H="T" I="0"></level_5> <level_5 H="L" I="0"></level_5> </level_4> <level_4 E="0" F="2" G="59"> <level_5 H="S" I="27"></level_5> <level_5 H="T" I="2"></level_5> <level_5 H="L" I="0"></level_5> </level_4> </level_3>> </level_2> <level_1> 以下是我寫的,我想把xml結構寫成可以直接以分號分隔的文字檔,每筆資料一行 但以下面這個程式執行後發現,檔案不但大,而且資料重複不少, 因為對於利用Python來解析xml的函式庫不熟,不曉得是哪裡出了差錯, 怎麼會重複筆數一大堆 或者有什麼更方便的方法可以將巢狀結構的xml整理成只有一層的方法, 而不是到level_4、level_5那麼深的方法 謝謝 import xml.etree.ElementTree as ET xml_file = open('xxxx.xml') tree = ET.parse(xml_file) root = tree.getroot() for level_3 in root.iter('level_3'): A = level_3.get('A') B = level_3.get('B') C = level_3.get('C') for level_4 in root.iter('level_4'): E = level_4.get('E') F = level_4.get('F') G = level_4.get('G') for level_5 in root.iter('level_5'): H = level_5.get('H') I = level_5.get('I') row = A+";"++";"+B+";"+C+";"+E+";"+F+";"+G+";"+H+";"+I print(row) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.220.69.237 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1532581671.A.4B1.html

08/01 01:50, 7年前 , 1F
你是想弄回成表格嗎?
08/01 01:50, 1F
是的,但我試著寫的code卻會讓同一筆紀錄重複幾百幾千遍 ※ 編輯: liquidbox (61.220.69.237), 08/02/2018 12:35:17
文章代碼(AID): #1RMLSdIn (Python)
文章代碼(AID): #1RMLSdIn (Python)