Java XMLStreamReader.getText () задыхается от символов, закодированных XML?

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

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

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

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

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

Спасибо!


person The111    schedule 14.10.2012    source источник


Ответы (1)


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

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

person Stephen C    schedule 14.10.2012
comment
Да, похоже, это корень проблемы, большое спасибо! - person The111; 14.10.2012