Minidom getElementById no funciona

La función getElementById de Minidom está devolviendo Ninguno para cualquier entrada que pase.

Por ejemplo, este código:

l = minidom.parseString('Node') print(l.getElementById("node")) 

Imprime “Ninguno” en mi computadora.

¡Debo estar haciendo algo mal aquí, pero no puedo entenderlo!

Estoy ejecutando Python 3.3.2 si eso ayuda.

Si quieres obtener elementos con nombre = “nodo”

 l.getElementsByTagName("node") 

Si desea obtener elementos con atributo que tenga un atributo “id” con valor “nodo”, use xpath :

 import xpath xpath.find("//*['id=node']",l) #search for all elements with an attribute id="node" 

Utilicé otro método para obtener Elemnts por ID (es decir, el atributo XML “id”), ya que solo quería usar xml.dom.minidom.

Aquí hay un ejemplo de mi trabajo:

 #import minidom from xml.dom.minidom import parse as p #parse your XML-document cmmn_doc = p("document.xml") #Get all child nodes of your root-element or any element surrounding your "target" (in my example "cmmn:casePlanModel") notelist = cmmn_doc.getElementsByTagName("cmmn:casePlanModel")[0].childNodes #Now find the element via the id-tag def find_element(id): i=0 for i in range(len(notelist)): if notelist[i].getAttribute("id") == id: return notelist[i].nodeName #(or whatever you want to do) #Call find_element with the id you are looking for find_element(id) 

XML del ejemplo:

                       complete   occur                

Encontré esta manera más conveniente.

Por la instrucción que escribió, entiendo que está intentando obtener el elemento cuyo valor de id es node .

La solución es recorrer todos los elementos XML (bueno, solo tiene uno en esta situación, pero no importa), y luego verificar si ese elemento tiene un atributo llamado id y el valor de ese atributo es node .

Vamos a traducir esta lógica en un progtwig:

 >>> from xml.dom import minidom >>> xml_string = 'Node' >>> xml_doc = minidom.parseString(xml_string) >>> elements = xml_doc.getElementsByTagName('node') >>> for element in elements: ... if element.hasAttribute('id') and element.getAttribute('id') == 'node': ... print(element.toxml()) ... Node