從XML

2014-02-24 47 views
0

獲得元素的名稱,我有以下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()來獲取它們的屬性

回答

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'} 
+0

謝謝您的回答傢伙。我使用ElementTree,因爲我已經用它來解析這個xml的不同部分。但我嘗試了lxml,看起來好像 – user3346525

+0

@ user3346525'lxml.etree'與ElementTree [兼容](http://lxml.de/1.3/compatibility.html),它的[性能更好](http: //lxml.de/performance.html) – zhangxaochen

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)