通过XML迭代以获取所有子节点的文本值

时间:2012-10-22 05:18:57

标签: python xml-parsing

我有一个包含以下数据的xml。我需要获得价值和所有其他属性。我返回一个python代码,我只获得第一个驱动程序值。

我的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。

1 个答案:

答案 0 :(得分:4)

for循环中,它应该是

child.text

root[0].text