2016-01-17 645 views
0

我使用xml.etree.ElementTree來讀取包含團隊及其成員列表的xml文件。我想訪問一個成員名稱。在python中讀取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是非常有效的。有什麼辦法嗎?

回答

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