2010-03-04 7 views
0

Dans le code suivant ci-dessous, comment récupérer la valeur de id, Id a plusieurs valeurs dans it.How pour accéder aux valeurs d'identité et mettre à jour à RESULT1Accéder à des variables python dans une liste

def parse_results(): 

    try: 
     xml = minidom.parseString(new_results) 
     for xmlchild in xmldoc.childNodes[0].childNodes : 
      result1 = {} 
      result1.update ({'firstname': xmlchild.getElementsByTagName("firstname")[0].childNodes[0].nodeValue}) 
      result1.update ({'lastname': xmlchild.getElementsByTagName("lastname")[0].childNodes[0].nodeValue}) 
      result1.update ({'address': address}) 
      if xmlchild.getElementsByTagName("id")[0].childNodes[0].nodeValue:  
       logging.debug(xmlchild.getElementsByTagName("id")[0].childNodes[0].nodeValue.lower())   

      result1.update ({'id': id}) 

Modifier :

xmlchild.getElementsByTagName("id")[0].childNodes[0].nodeValue de la déclaration donne une exception

Ajout XML:

<info><firstname>firstname</firstname><lastname>lastname</lastname><id>2</id></info> 
<info><firstname>firstname</firstname><lastname>lastname</lastname><id>3</id></info> 
<info><firstname>firstname</firstname><lastname>lastname</lastname><id>4</id></info> 
+0

pourrait vous envoyer une partie de xml aussi? – YOU

+0

J'ai ajouté les xmls – Hulk

+0

quand je viens de vérifier que 3 lignes de xml, il n'y avait pas de problème sur la ligne vous obtenez l'exception, étrange – YOU

Répondre

0

Pourquoi utilisez-vous minidom? C'est vraiment ennuyeux à utiliser.

Je vous suggère de passer à element tree:

import xml.etree.ElementTree as et 
d = et.fromstring(''' 
<doc> 
<info><firstname>firstname</firstname><lastname>lastname</lastname><id>2</id></info> 
<info><firstname>firstname</firstname><lastname>lastname</lastname><id>3</id></info> 
<info><firstname>firstname</firstname><lastname>lastname</lastname><id>4</id></info> 
</doc> 
''') 

result = [dict((el.tag, el.text) for el in info) for info in d.findall('info')] 
print result 

qui imprime:

[{'firstname': 'firstname', 'id': '2', 'lastname': 'lastname'}, 
{'firstname': 'firstname', 'id': '3', 'lastname': 'lastname'}, 
{'firstname': 'firstname', 'id': '4', 'lastname': 'lastname'}] 
+0

Element Tree ne fait pas partie de l'installation par défaut, est-ce? C'est probablement pourquoi. L'OP devrait installer lxml (http://codespeak.net/lxml/). A part ça, je suis complètement d'accord. Bien plus facile à utiliser. – Tom

+0

@Tom: Heureusement, cela fait partie de l'installation par défaut, puisque python 2.5: http://docs.python.org/library/xml.etree.elementtree.html - J'ai ajouté le lien à ma réponse. – nosklo

+0

@Tom: Installer lxml vaut toujours le coup pour le support supplémentaire de xpath, ce qui est vraiment sympa. – nosklo

Questions connexes