我有一个如下所示的xml:
1
some text
some text
1
a
a
2
b
b
3
c
c
2
some text
some text
1
aa
aa
2
bb
bb
3
cc
cc
3
some text
some text
1
aaa
aaa
2
bbb
bbb
3
ccc
ccc
我正试图将这个xml转换成一个名为“G”的嵌套字典:
^{pr2}$
我的代码可以很好地得到所有在“G”下的元素,例如G1、G2等等,但是对于GP,我要么只得到一条记录,要么我得到所有的它们,但是它重复了几次,要么我在字典中的一个GP下得到了所有9个GP元素。这是我的代码:f = 'path to file'
tree = ET.parse(f)
root = tree.getroot()
self.tree = tree
self.root = root
gs = len(self.tree.getiterator('G'))
g = {}
for i in range(0, gs):
d = {}
for elem in self.tree.getiterator('G')[i]:
if elem.text == "\n " and elem.tag not in ['GP']:
dd = {}
for parent in elem:
if parent.text == "\n ":
ddd = {}
for child in parent:
ddd[child.tag] = child.text
dd[parent.tag] = ddd
else:
dd[parent.tag] = parent.text
d[elem.tag] = dd
else:
d[elem.tag] = elem.text
g[i+1] = d
# Build GP
count = 0
gp = {}
for elem in self.tree.getiterator('GP'):
d = {}
for parent in elem:
if parent.text == "\n ":
dd = {}
for child in parent:
dd[child.tag] = child.text
d[parent.tag] = dd
else:
d[parent.tag] = parent.text
count += 1
gp[count] = d
g["GP"] = gp