如何使用Python SAX解析器获取标签之间的文本?

7 投票
1 回答
4924 浏览
提问于 2025-04-15 19:16

我需要做的就是获取对应标签的文本,并把它保存到数据库里。因为这个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]

撰写回答