你可以使用xml.sax.handler解析XML來實現:
import xml.sax as sax
import xml.sax.handler as saxhandler
import pprint
class TagParser(saxhandler.ContentHandler):
# http://docs.python.org/library/xml.sax.handler.html#contenthandler-objects
def __init__(self):
self.tags = {}
def startElement(self, name, attrs):
self.tag = name
def endElement(self, name):
if self.tag:
self.tags[self.tag] = self.data
self.tag = None
self.data = None
def characters(self, content):
self.data = content
parser = TagParser()
src = '''\
<some_root_name>
<tag_x>bubbles</tag_x>
<tag_y>car</tag_y>
<tag...>42</tag...>
</some_root_name>'''
sax.parseString(src, parser)
pprint.pprint(parser.tags)
產量
{u'tag...': u'42', u'tag_x': u'bubbles', u'tag_y': u'car'}
感謝您的回覆,這應該很好。我正在使用.xml文件(不是xml字符串)。在迭代它之前,我需要將文件轉換爲字符串嗎?如果是這樣,你能告訴我該怎麼做嗎? StringIO的?再次感謝。 – Markus 2012-01-11 11:09:00
我在上面添加了一個例子。 – Kristofer 2012-01-11 11:21:41
'from xml.etree'應該是'from lxml.etree',不是嗎? – 2012-01-11 11:24:54