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

作者: liquidbox (樹枝擺擺)   2018-07-26 13:07:49
大家好,想請問如何將具多層巢狀結構的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)
作者: virginbear (純潔的熊)   2018-08-01 01:50:00
你是想弄回成表格嗎?

Links booklink

Contact Us: admin [ a t ] ucptt.com