在python中读取xml的节点值的子元素

时间:2016-01-17 22:47:17

标签: python xml python-3.x treenode

我正在使用xml.etree.ElementTree来读取包含团队及其成员列表的xml文件。我想访问会员名称。

-<xml>
    -<teams>
        -<team>
            -<members>
               -<member1>
                   <style>Name1</style>
               </member1>
               -<member2>
                   <style>Name2</style>
               </member2>
               -<member3>
                   <style>Name3</style>
               </member3>
             </members>
        -</team>
        -<team>
        …
        -<team>
        -</team>
        …
        -<team>
        -</team>
    -</teams>
-</xml>

我使用以下代码获取会员名称:

    import xml.etree.ElementTree as ET 
    tree = ET.parse(infile)
    root = tree.getroot()
    for child in root[0]:
        for node in child:
            if node.tag=="members":
                for _member in node.iter("style"):
                    print(_member.text)

这些代码部分解决了问题。实际上,直接访问标签member1非常有效。有什么办法吗?

1 个答案:

答案 0 :(得分:0)

xml.etree.ElementTree的XPath支持有限,但在这种情况下就足够了:

for name in root.findall(".//team/members/*/style"):
    print(name.text)

演示:

>>> import xml.etree.ElementTree as ET
>>> 
>>> tree = ET.parse("test.xml")
>>> root = tree.getroot()
>>> 
>>> for name in root.findall(".//team/members/*/style"):
...     print(name.text)
... 
Name1
Name2
Name3