0

在下面的代码中,如何获取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})

编辑:

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>
4

1 回答 1

0

你为什么用minidom?使用起来真的很无聊。

我建议你移到元素树

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'}]
于 2010-03-04T12:40:08.863 回答