Доступ к переменным python в списке - PullRequest
0 голосов
/ 04 марта 2010

В следующем коде, как получить значение id, в Id есть несколько значений. Как получить доступ к значениям id и обновить его до result1

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})

Edit:

xmlchild.getElementsByTagName("id")[0].childNodes[0].nodeValue - это утверждение дает исключение

Добавление 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>

1 Ответ

0 голосов
/ 04 марта 2010

Почему вы используете минидом? Это действительно скучно в использовании.

Я предлагаю вам перейти к дереву элементов :

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

что печатает:

[{'firstname': 'firstname', 'id': '2', 'lastname': 'lastname'},
 {'firstname': 'firstname', 'id': '3', 'lastname': 'lastname'},
 {'firstname': 'firstname', 'id': '4', 'lastname': 'lastname'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...