我有以下xml
<MMDEF>
<elem1 MmDefault="1" Se="1.xml"/>
<elem2 MmDefault="2" Se="2.xml"/>
<elem3 MmDefault="3" Se="1.xml"/>
<elem4 MmDefault="3" Se="2.xml"/>
<elem5 MmDefault="5" Se="2.xml"/>
<elem6 MmDefault="7" Se="1.xml"/>
</MMDEF>
如何获得包含其属性的所有元素elem1,elem2,elem3,elem4,elem5和elem6的可迭代列表。
请记住elem1,elem2等可以是完全随机的字符串,所以我不能使用getElementsByTagName()来获取它们的属性
答案 0 :(得分:1)
我想使用lxml,可以使用Windows上的命令easy_install lxml
轻松安装:
In [258]: x='''
...: <MMDEF>
...: <elem1 MmDefault="1" Se="1.xml"/>
...: <elem2 MmDefault="2" Se="2.xml"/>
...: <elem3 MmDefault="3" Se="1.xml"/>
...: <elem4 MmDefault="3" Se="2.xml"/>
...: <elem5 MmDefault="5" Se="2.xml"/>
...: <elem6 MmDefault="7" Se="1.xml"/>
...: </MMDEF>
...: '''
In [265]: from lxml import etree
...: rt=etree.fromstring(x)
...: for child in rt:
...: print child.tag, child.attrib
elem1 {'MmDefault': '1', 'Se': '1.xml'}
elem2 {'MmDefault': '2', 'Se': '2.xml'}
elem3 {'MmDefault': '3', 'Se': '1.xml'}
elem4 {'MmDefault': '3', 'Se': '2.xml'}
elem5 {'MmDefault': '5', 'Se': '2.xml'}
elem6 {'MmDefault': '7', 'Se': '1.xml'}
答案 1 :(得分:1)
from xml.etree import ElementTree as ET
filePath = r'path/to/file'
root = ET.parse(filePath).getroot()
for child in root:
print(child.tag, child.attrib)