estoy usando Python (minidom) para analizar un archivo XML que imprime una estructura jerárquica que se ve algo como esto (la sangría se utiliza aquí para mostrar la relación jerárquica significativo):análisis XML con Python y minidom
My Document
Overview
Basic Features
About This Software
Platforms Supported
En su lugar, el programa itera varias veces sobre los nodos y produce lo siguiente, imprimiendo nodos duplicados. (En cuanto a la lista de nodos en cada iteración, es obvio por qué se hace esto pero parece que no puede encontrar una manera de conseguir la lista de nodos que estoy buscando.)
My Document
Overview
Basic Features
About This Software
Platforms Supported
Basic Features
About This Software
Platforms Supported
Platforms Supported
Aquí está el origen XML archivo:
<?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>
Este es el programa de 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
pude solucionar el problema no anidan elementos 'tema', cambiando los nombres de los temas de nivel inferior a algo así como 'SubTopic1' y ' SubTopic2 '. Pero, quiero aprovechar la estructuración jerárquica XML incorporada sin necesidad de nombres de elementos diferentes; parece que debería poder anidar elementos 'Tema' y que debería haber alguna manera de saber qué nivel 'Tema' estoy mirando actualmente.
He intentado varias funciones diferentes de XPath sin mucho éxito.
Si desea que la salida de la primera se puede simplemente imprimir el texto de cada elemento - No me queda claro cómo el structuting afecta a la salida deseada – Mark