より新しいxml.etree.ElementTree
標準モジュールを優先することをお勧めしますxml.dom.minidom
。次のことを試してください。
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
for element in tree.getiterator('item'):
print element.attrib
印刷します
{'image': 'a', 'name': 'item1'}
{'image': 'b', 'name': 'item2'}
{'image': 'c', 'name': 'item3'}
{'image': 'd', 'name': 'item4'}
ここで、.getiterator('item')
はツリーのすべての要素を走査し、 という名前の要素を返しますitem
。各要素の.attrib
は、要素属性の辞書です。これはまさにあなたが望むものです。
実際には、要素はサブ要素のリストとして動作します。上記の属性はディクショナリ内の項目であり、ElemenTree は DOM アプローチよりも Python にはるかに適しています。
上記のサンプルに次のコードを追加します。
print '----------------'
root = tree.getroot()
ET.dump(root)
print '----------------'
print root.tag
print root.attrib
for elem in root:
print elem.tag, elem.attrib
それは印刷します:
----------------
<main>
<item image="a" name="item1" />
<item image="b" name="item2" />
<item image="c" name="item3" />
<item image="d" name="item4" />
</main>
----------------
main
{}
item {'image': 'a', 'name': 'item1'}
item {'image': 'b', 'name': 'item2'}
item {'image': 'c', 'name': 'item3'}
item {'image': 'd', 'name': 'item4'}