Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не происходить событие при парсинге XML, SAX 
:(
    Опции темы
Proger89
Дата 17.7.2010, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Доброго времени суток.
Мне необходимо при помощи SAX распарсить XML файл следующего содержания:
Код

<?xml version="1.0" encoding="UTF-8"?>

<!--
    Document   : TranslationFile.xml
    Created on : July 16, 2010, 9:57 PM
    Author     : proger
    Description:
        Purpose of the document follows.
-->

<translationFile  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
   xmlns='http://xml.netbeans.org/schema/TranslationFile'
   xsi:schemaLocation='http://xml.netbeans.org/schema/TranslationFile TranslationFile.xsd'>
    <text>
        <originalPhrase>File</originalPhrase>
        <translatedPhrase>Файл</translatedPhrase>
    </text>
    <text>
        <originalPhrase>Settings</originalPhrase>
        <translatedPhrase>Настройки</translatedPhrase>
    </text>
    <text>
        <originalPhrase>About</originalPhrase>
        <translatedPhrase>О программе</translatedPhrase>
    </text>

</translationFile>


Я написал следующую заготовку XML парсера:
Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Translation;

import Other.ParsingFileException;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import java.util.jar.Attributes;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/**
 *
 * @author proger
 */
class TranslationFileParser extends DefaultHandler {
    private String _fileName;
    private Hashtable<String, String> _translationTable;

    public TranslationFileParser(String fileName) {
        _fileName = fileName;
        _translationTable = new Hashtable<String, String>();
    }

    public Hashtable<String, String> parse() throws IOException, ParsingFileException {
        SAXParserFactory factory = SAXParserFactory.newInstance();
        try {
            SAXParser saxParser = factory.newSAXParser();
            saxParser.parse(new File(_fileName), this);

        } catch (IOException ex) {
            Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, "Error opening file: " + _fileName, ex);
            throw ex;
        } catch (ParserConfigurationException ex) {
            Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, "Parser configuration exception", ex);
            throw new ParsingFileException(ex.getMessage());
        } catch (SAXException ex) {
            Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, "Error during parsing file: " + _fileName, ex);
            throw new ParsingFileException(ex.getMessage());
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return _translationTable;
    }

    /** Start document. */

  public void startDocument()
  {
    System.out.println("<?xml version=\"1.0\"?>");
  } // startDocument()

  /** Start element. */

    /** Start element. */
  public void startElement(String uri,
                         String localName,
                         String qName,
                         Attributes attributes)
                  throws SAXException {
      System.out.println("<" + name + ">");
   }

   // receive notification of the end of an element

   public void endElement (String uri, String name,
   String qName) {
    System.out.println("</" + qName + ">");
   }
}



Однако в результате получается следующий вывод:
Код

<?xml version="1.0"?>
</originalPhrase>
</translatedPhrase>
</text>
</originalPhrase>
</translatedPhrase>
</text>
</originalPhrase>
</translatedPhrase>
</text>
</translationFile>


То есть метод startElement не вызывается.... Если я пытаюсь перед этим методом поставить атрибут @Override, то компилятор ругается, что такого метода нет у родительского класса. Но это странно, потому что он там есть (об этом говорит javadoc и NetBeans). И все примеры которые я нашел на винграде и в инете содержат именно такой код
В чем же дело? Как мне добится работоспособности  этого кода?
Заранее благодарен
PM   Вверх
rygel
Дата 17.7.2010, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 21.9.2007
Где: Харьков

Репутация: 6
Всего: 7



потому что ты у тебя класс Attributes импортится из пакета java.util.jar , а не  из org.xml.sax

PM MAIL   Вверх
Proger89
Дата 17.7.2010, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Цитата(rygel @ 17.7.2010,  16:14)
потому что ты у тебя класс Attributes импортится из пакета java.util.jar , а не  из org.xml.sax

Спасибо... Не заметил такой глупой оплошности.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0585 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.