从xml获取元素名称

时间:2014-02-24 12:22:44

标签: python xml

我有以下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()来获取它们的属性

2 个答案:

答案 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)