Как я могу получить текст между тегами, используя анализатор python SAX? - PullRequest
7 голосов
/ 14 февраля 2010

Что мне нужно, это просто получить текст соответствующего тега и сохранить его в базе данных. Поскольку XML-файл большой (4,5 ГБ), я использую sax. Я использовал метод символов , чтобы получить текст и поместить его в словарь. Однако, когда я печатаю текст методом 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 голосов
/ 14 февраля 2010

Текст в теге разбит на части процессором 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]
...