Java XMLStreamReader.getText() душит символы в кодировке XML?

Я пытаюсь проанализировать гигантский (> 1 ГБ) XML-файл, используя XMLStreamReader Java. Я использую метод getText() для извлечения содержимого узла. У меня есть XML-файл, закодированный как ISO-8859-1, а некоторые символы имеют специальную кодировку, например & кодируется как & в файле.

Так что, если файл содержит, например:

<person>Jack</person>
<person>Jill</person>
<persons>Jack &amp; Jill</persons>

И я пытаюсь получить содержимое каждого узла с помощью getText(), 3-й узел только возвращает Jack, В любое время &xxx; встречается символ, никакие символы после него (в том же узле) не анализируются или не возвращаются.

В чем проблема? Правильно ли закодирован XML-файл? Я правильно использую парсер Java?

Спасибо!

1 ответ

Решение

Я подозреваю, что проблема в том, что парсер разделил содержимое элементов от третьего лица на несколько событий обработки. (Это поведение next() задокументировано.) getText() только дает вам текст для текущего события.

Попробуйте использовать getElementText() вместо.

Другие вопросы по тегам