Analyse XML avec Python et minidom

Je suis à l'aide de Python (minidom) pour analyser un fichier XML qui imprime une structure hiérarchique qui ressemble à quelque chose comme ceci (l'indentation est utilisé ici pour montrer l'importante relation hiérarchique):

My Document
Overview
    Basic Features
    About This Software
        Platforms Supported

Au lieu de cela, le programme effectue une itération à plusieurs reprises sur les nœuds et produit ce qui suit, l'impression de nœuds dupliqués. (Regardant la liste des nœuds à chaque itération, il est évident pourquoi il fait cela, mais je n'arrive pas à trouver un moyen d'obtenir la liste de noeud, je suis à la recherche d'.)

My Document
Overview
Basic Features
About This Software
Platforms Supported
Basic Features
About This Software
Platforms Supported
Platforms Supported

Voici le fichier source XML:

<?xml version="1.0" encoding="UTF-8"?>
<DOCMAP>
    <Topic Target="ALL">
        <Title>My Document</Title>
    </Topic>
    <Topic Target="ALL">
        <Title>Overview</Title>
        <Topic Target="ALL">
            <Title>Basic Features</Title>
        </Topic>
        <Topic Target="ALL">
            <Title>About This Software</Title>
            <Topic Target="ALL">
                <Title>Platforms Supported</Title>
            </Topic>
        </Topic>
    </Topic>
</DOCMAP>

Voici le programme Python:

import xml.dom.minidom
from xml.dom.minidom import Node

dom = xml.dom.minidom.parse("test.xml")
Topic=dom.getElementsByTagName('Topic')
i = 0
for node in Topic:
    alist=node.getElementsByTagName('Title')
    for a in alist:
        Title= a.firstChild.data
        print Title

J'ai pu résoudre le problème par pas de nidification 'Sujet' éléments, en changeant le niveau inférieur des noms de rubrique à quelque chose comme "SubTopic1" et "SubTopic2'. Mais, je veux profiter de XML intégré structuration hiérarchique sans avoir besoin de différents noms d'élément; il semble que je devrais être capable de nid 'Sujet' éléments et qu'il doit y avoir un moyen de connaître le niveau de "Sujet", je suis actuellement à la recherche à.

J'ai essayé un certain nombre de différentes fonctions XPath sans beaucoup de succès.

source d'informationauteur hWorks