作者liquidbox (树枝摆摆)
看板Python
标题[问题] xml树状结构过深的问题
时间Thu Jul 26 13:07:49 2018
大家好,想请问如何将具多层巢状结构的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://webptt.com/cn.aspx?n=bbs/Python/M.1532581671.A.4B1.html
1F:→ virginbear: 你是想弄回成表格吗? 08/01 01:50
是的,但我试着写的code却会让同一笔纪录重复几百几千遍
※ 编辑: liquidbox (61.220.69.237), 08/02/2018 12:35:17