楼主:
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)