2017-06-20 75 views
2
<student id="1" student:name="robert"> 
<sectionA> 
    <class name="first"/> 
</sectionA> 
</student> 
<student id="2" student:name="lucky"> 
<sectionB> 
    <class name="first"/> 
</sectionB> 
</student> 
<student id="2" student:name="Dave"> 
<sectionA> 
    <class name="third"/> 
</sectionA> 
</student> 


from xml.dom import minidom 

dom1 = minidom.parse("file.xml") 
student = dom1.getElementsByTagName("student") 
for b in student: 
    sectionA = dom1.getElementsByTagName("sectionA") 
    for a in sectionA: 
     name = b.getAttribute("student:name") 
     print name 

這給了我下面的輸出: 羅伯特 幸運 戴夫蟒蛇minidom命名XML解析器3

但是我期待下面的輸出 預期輸出: 羅伯特 戴夫

回答

0

在這一行:

student = dom1.getElementsByTagName("student") 

實際上g等所有項目,然後總是存在的東西a,然後你試圖從bgetAttribute!爲什麼b

也許最後for是完全沒有必要的,你可以使用:

student = dom1.getElementsByTagName("sectionA") 

然後用parentNode得到屬性!

可以使用parentNode()例如,您可以更改您的代碼如下:

from xml.dom import minidom 

dom1 = minidom.parse("file.xml") 
student = dom1.getElementsByTagName("sectionA") 

for b in student: 
    print(b.parentNode.getAttribute("name")) 

# Output: 
# robert 
# Dave 

編號:xml.de

+0

感謝 它的工作:) – wrdw