Estoy creando una interfaz gráfica de usuario para la API de Eve Online en Python.
He extraído con éxito los datos XML de su servidor.
Estoy tratando de tomar el valor de un nodo llamado "nombre":
from xml.dom.minidom import parse
dom = parse("C:\\eve.xml")
name = dom.getElementsByTagName('name')
print name
Esto parece encontrar el nodo, pero el resultado es el siguiente:
[<DOM Element: name at 0x11e6d28>]
¿Cómo puedo hacer que imprima el valor del nodo?
Respuestas:
Debería ser
fuente
Probablemente algo como esto si es la parte de texto que desea ...
La parte de texto de un nodo se considera un nodo en sí mismo colocado como un nodo hijo del que solicitó. Por lo tanto, querrá revisar todos sus elementos secundarios y encontrar todos los nodos secundarios que sean nodos de texto. Un nodo puede tener varios nodos de texto; p.ej.
Quieres tanto 'blabla' como 'znylpx'; de ahí el "" .join (). Es posible que desee reemplazar el espacio con una nueva línea o algo así, o tal vez con nada.
fuente
puedes usar algo como esto, funcionó para mí
fuente
Sé que esta pregunta es bastante antigua ahora, pero pensé que podría ser más fácil con ElementTree
Sé que no es muy específico, pero lo acabo de descubrir, y hasta ahora es mucho más fácil entender que el minidom (ya que muchos nodos son esencialmente espacios en blanco).
Por ejemplo, tiene el nombre de la etiqueta y el texto real juntos, tal como probablemente esperaría:
fuente
La respuesta anterior es correcta, a saber:
Sin embargo, para mí, como otros, mi valor estaba más abajo en el árbol:
Para encontrar esto utilicé lo siguiente:
Ejecutando esto para mi archivo SVG simple creado con Inkscape, esto me dio:
Usé xml.dom.minidom, los distintos campos se explican en esta página, MiniDom Python.
fuente
Tuve un caso similar, lo que funcionó para mí fue:
name.firstChild.childNodes [0] .data
Se supone que XML es simple y realmente lo es y no sé por qué el minidom de Python lo hizo tan complicado ... pero así es como se hace
fuente
Aquí hay una respuesta ligeramente modificada de Henrik para múltiples nodos (es decir, cuando getElementsByTagName devuelve más de una instancia)
fuente
La pregunta ha sido respondida, mi aporte consiste en aclarar una cosa que puede confundir a los principiantes:
Algunas de las respuestas sugeridas y correctas se utilizaron
firstChild.data
y otras se utilizaron en sufirstChild.nodeValue
lugar. En caso de que se pregunte cuál es la diferencia entre ellos, debe recordar que hacen lo mismo porquenodeValue
es solo un alias paradata
.La referencia a mi declaración se puede encontrar como un comentario sobre el código fuente de minidom :
fuente
Es un árbol y puede haber elementos anidados. Tratar:
fuente