Sax Parser: processingInstruction () не вызывается - PullRequest
0 голосов
/ 20 июля 2010

возможно, это вопрос n00b.

Я пытаюсь разобрать xml-файл так:

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

со следующим кодом:

public static void parse(File f) {
    final DefaultHandler handler = new DefaultHandler() {
        @Override
        public void processingInstruction(String target, String data) throws SAXException {
            System.out.println("Processing Instruction");
        }
    };
    SAXParserFactory.newInstance().newSAXParser().parse(f, handler);
}

Я ожидаю, что вывод "Processing Instruction" будет напечатан на стандартный вывод. Но этого не происходит. Может кто-нибудь сказать мне, почему?

1 Ответ

1 голос
/ 20 июля 2010

Из JavaDoc:

Синтаксический анализатор SAX никогда не должен сообщать декларацию XML (XML 1.0, раздел 2.8) или текстовое объявление (XML 1.0, раздел 4.3.1), используя этот метод.

Насколько я понимаю, строка <?xml version="1.0" encoding="UTF-8" ?> не будет сообщаться / отлавливаться этим методом. Попробуйте добавить еще одну инструкцию обработки в код xml и снова передать ее в анализатор.

...