如何使用Python SAX解析器获取标签之间的文本?
我需要做的就是获取对应标签的文本,并把它保存到数据库里。因为这个xml文件很大(4.5GB),所以我选择使用sax。为了获取文本,我用了characters这个方法,把文本放进了一个字典里。但是当我在endElement方法里打印文本时,却得到了一个换行,而不是我想要的文本。
这是我的代码:
def characters(self,content):
text = unescape(content))
self.map[self.tag]=text
def startElement(self, name, attrs):
self.tag = name
def endElement (self, name)
if (name=="sometag")
print self.map[name]
提前谢谢你。
1 个回答
8
在这个标签里的文本会被SAX处理器分成小块。也就是说,characters
这个方法可能会被调用很多次。
你需要做一些类似下面的事情:
def startElement(self, name, attrs):
self.map[name] = ''
self.tag = name
def characters(self, content):
self.map[self.tag] += content
def endElement(self, name):
print self.map[name]