Java Android SAX Parse - Потерянные символы случайным образом [дублировать]

Заменить Response.End () С помощью HttpContext.Current.ApplicationInstance.CompleteRequest ();

0
задан Srinivas 17 October 2011 в 20:57
поделиться

2 ответа

Метод символов называется три раза здесь, чтобы сообщать содержимое адреса элемента из-за наличия внешнего объекта. Вы должны накапливать содержание вызовов до символов, пока не получите событие endElement, а затем у вас есть полный контент.

Обратите внимание на документацию метода символов .

Вы также можете воспользоваться использованием метода ignorableWhitespace с проверочным синтаксическим анализатором и соответствующей схемой (например, DTD), чтобы позволить синтаксическому анализатору узнать, какие пространства игнорируются (из-за отступов).

In Java, это может быть:

class MyHandler extends DefaultHandler {

    private StringBuilder acc;

    public MyHandler() {
        acc = new StringBuilder();
    }

    @Override
    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        System.out.printf("Characters accumulated: %s\n", acc.toString());
        acc.setLength(0);
    }

    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        acc.append(ch, start, length);
    }
}
6
ответ дан lkuty 16 August 2018 в 02:34
поделиться
  • 1
    Я редактировал свой первоначальный вопрос, чтобы включить реализацию моего анализатора SAX. Не могли бы вы взглянуть и сказать мне, где я ошибаюсь, поскольку я пытаюсь прочитать все символы в элементе адреса. Благодарю. – Srinivas 17 October 2011 в 20:59
  • 2
    Как я уже говорил, вам нужно накапливать символы в StringBuilder, прежде чем получать его, как в моем примере. – lkuty 18 October 2011 в 11:37
  • 3
    Вы также можете посмотреть ответ . Это точно такой же метод. – lkuty 18 October 2011 в 11:59
  • 4
    Спасибо, это сработало! – Srinivas 20 October 2011 в 19:17

Ответ зависит от того, какой синтаксический анализатор вы используете.

Ниже приведено подробное описание проблемы: http://www.ibm.com/developerworks/xml/library/x-tipsaxdo4/index.html

С помощью анализатора StaX вы можете указать свойство isCoalescing = true. Это свойство specifies whether to coalesce adjacent adjacent character data.

Но с SAX такого управления вообще нет.

0
ответ дан Mike Sokolov 16 August 2018 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: