2010-03-04 3 views
0

В следующем коде ниже, как получить значение идентификатора, Id имеет несколько значений в it.How для доступа к значениям идентификатора и обновления его 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}) 

Редактировать :

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> 
+0

могли бы вы опубликовать часть XML тоже? – YOU

+0

Я добавил xmls – Hulk

+0

, когда я только что проверил, что 3 строки xml, не было проблемы на линии, в которой вы получаете исключение, странно – YOU

ответ

0

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

Я предлагаю вам перейти к 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 

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

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

Element Tree не входит в стандартную установку, не так ли? Вероятно, поэтому. OP необходимо установить lxml (http://codespeak.net/lxml/). Кроме этого, я полностью согласен. Путь проще в использовании. – Tom

+0

@Tom: К счастью, это часть установки по умолчанию, поскольку python 2.5: http://docs.python.org/library/xml.etree.elementtree.html - Я добавил ссылку на мой ответ. – nosklo

+0

@Tom: Установка lxml по-прежнему стоит того, чтобы добавить дополнительную поддержку xpath, хотя это действительно приятно. – nosklo

Смежные вопросы