python 迷你王国 xml 解析器 3

python minidom xml parser 3

<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

这给了我以下输出: 罗伯特 幸运的 戴夫

但是我期待以下输出 预期输出: 罗伯特 戴夫

在这一行中:

student = dom1.getElementsByTagName("student")

实际上获取了所有项目,然后总是在 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