От новичка до гуру: Курсы программирования на CyberDuff

Как я могу получить текст между тегами с помощью парсера python SAX?

Мне нужно просто получить текст соответствующего тега и сохранить его в базе данных. Поскольку файл xml большой (4,5 ГБ), я использую 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]

Заранее спасибо.

14.02.2010

Ответы:


1

Текст в теге разбивается процессором 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]
14.02.2010
  • Спасибо ! Приведенный ниже код является случайностью или так и должно быть? self.map[имя] == '' 15.02.2010
  • Где я могу найти ссылку на это поведение? Текст в теге разбивается процессором SAX. символы могут вызываться несколько раз. 15.02.2010
  • Поведение описано в документации: localhost/doc/python2.6-doc/html/library/ 15.02.2010
  • Думаю, моя локальная копия не очень поможет... docs.python.org/library/ 15.02.2010
  • Из документации обработчика SAX: «Синтаксический анализатор вызовет этот метод, чтобы сообщить каждый фрагмент символьных данных». 09.08.2015
  • Новые материалы

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

    Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
    Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

    Игра в прятки с данными
    Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

    «Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
    TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

    Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
    Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

    Все о кейсах: Camel, Snake, Kebab & Pascal
    В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..