抱歉,如果问题晦涩难懂,但此示例 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'}
我知道我的临时调用和分配可能是错误的,但主要问题是在每个标签中分配文本值,因为它只找到最后一个。最终的解决方案最终需要字典以用于其他方法和功能。因此,尽管欢迎任何提示和解决方案,但如果它们可以专注于字典,那将非常有帮助。