2012-10-22 114 views
0

我有一個xml以下數據。我需要獲得所有其他屬性的價值。我返回一個Python代碼,我只得到第一個驅動程序的價值。通過XML迭代得到所有子節點的文本值

我的XML:

<volume name="sp" type="span" operation="create"> 
    <driver>HDD1</driver> 
    <driver>HDD2</driver> 
    <driver>HDD3</driver> 
    <driver>HDD4</driver> 
</volume> 

我的腳本:

import xml.etree.ElementTree as ET 
doc = ET.parse("vol.xml") 
root = doc.getroot() #Returns the root element for this tree. 
root.keys()   #Returns the elements attribute names as a list. The names are returned in an arbitrary order 
root.attrib["name"] 
root.attrib["type"] 
root.attrib["operation"] 

print root.get("name") 
print root.get("type") 
print root.get("operation") 

for child in root: 
    #print child.tag, child.attrib 
    print root[0].text 

我的輸出:

sr-query:~# python volume_check.py aaa 
    sp 
    span 
    create 
    HDD1 
    sr-queryC:~# 

我沒有得到HDD2HDD3HDD4。如何通過這個XML來獲取所有值?任何優化的方式?我認爲任何for循環可以做到這一點,但不熟悉Python。

回答

4

在你for循環,它應該是

child.text 

root[0].text 
+0

由於其工作.. –