質問があいまいな場合は申し訳ありませんが、この例の xml はそれを完全に示しています。
<Components>
<Component>
<ComponentID>B1</ComponentID>
<ComponentName>replace</ComponentName>
<Description>replace</Description>
</Component>
<Component>
<ComponentID>D2</ComponentID>
<ComponentName>Red</ComponentName>
<Description>Red</Description>
</Component>
<Component>
<ComponentID>D3</ComponentID>
<ComponentName>Yellow</ComponentName>
<Description>Yellow</Description>
</Component>
</Components>
基本的に、これらの各コンポーネントを辞書に保存したいと考えています。私はこのコードを試しました:
if elem1.tag == 'Components':
for elem2 in list(elem1):
if elem2.tag == 'Component':
temp = 0
for elem3 in list(elem2):
if elem3.tag == 'ComponentID':
temp+=1
asset['CompID'+str(temp)] = elem3.text
for elem3 in list(elem2):
if elem3.tag == 'ComponentName':
temp+=1
asset['CompName'+str(temp)] = elem3.text
for elem3 in list(elem2):
if elem3.tag == 'Description':
temp+=1
asset['Description'+str(temp)] = elem3.text
しかし、発生する問題は、各ディクショナリ キーが一意であっても、情報が取得されるのは最後に見つかったコンポーネントだけであるということです。
現在の出力:
{'CompID1': 'D3', 'CompName2': 'Yellow', 'Description3': 'Yellow'}
望ましい出力:
{'CompID1': 'B1', 'CompName1': 'replace', 'Description1': 'replace',
'CompID2': 'D2', 'CompName2': 'Red', 'Description2': 'Red',
'CompID3': 'D3', 'CompName3': 'Yellow', 'Description3': 'Yellow'}
一時呼び出しと割り当てが間違っている可能性があることはわかっていますが、最後のタグしか見つからないため、各タグ内のテキスト値の割り当てが主な問題です。最終的な解決策では、他のメソッドや関数で使用するために、最後に辞書が必要になります。そのため、ヒントや解決策は大歓迎ですが、辞書に焦点を当てることができれば、非常に役立ちます.