次のtest.xmlがあります
<root>
<parent>
<ID>1</ID>
<child1>Value1</child1>
<child2>value11</child2>
<child3>
<subchild>value111</subchild>
</child3>
</parent>
<parent>
<ID>2</ID>
<child1>value2</child1>
<child2>value22</child2>
<child2>value333</child2>
</parent>
<parent>
<ID>3</ID>
<child1>value3</child1>
<child2>value33</child2>
</parent>
<parent>
<ID>4</ID>
<child1>value4</child1>
<child2>value44</child2>
</parent>
</root>
私が達成しようとしているのは次のとおりです: test.xml を反復処理し、すべての親に対して、タグがインデックスでテキストが値であるディクショナリにすべての子ノードを配置し、取得したら親の最後までそれをデータベースに追加し、辞書をリセットして次の親に移動します。
だから私が望む最初の親のために
insert = {'ID':1,'child1':'value1','child2':'value11','subchild':'value111'}
それを SQL クエリで使用し、次の親に移動して辞書をリセットし、同じことを行います。すべての親が同じ数の子を持っているわけではなく、サブ子を持つ子もいます。
私は試してみました:
value = []
tag = []
from elementtree import ElementTree as ET
for parent in tree.getiterator():
for child in parent:
value.append(child.text)
tag.append(child.tag)
しかし、私は自分の望む結果を得る方法を理解できませんでした。投稿をできるだけシンプルにするために、xml を取得して開くことは省略しました。これは私が使用しようとしていた方法ですが、挿入するために親タグの最後で反復を停止できなかったため、正しい方法ではないと思います。
どんな助けでも大歓迎です!ありがとう