2013-02-21 1 views
2

Я разбор следующей строки с StAX XMLEventReader:Java, XMLEvent расположение символы

final String xmlstr = "<context><book><author>TheName</author></book></context>"; 

Я наблюдая значение event.getLocation().getCharacterOffset() и получить странное поведение: В то время как индекс start_element сообщаются в положении после объявления элемента (например, индекс 9 для элемента контекста) событие CHARACTERS для «TheName» указано в индексе 32. Почему? Есть ли способ исправить это?

+0

Это выглядит последовательным, поскольку заканчивает 9 символов с самого начала, в то время как ваш текстовый элемент заканчивается 32 символами с самого начала. Или я ошибался? –

+0

индекс 9 = '>', но индекс 32 = '/', а не 'e' –

ответ

2

Я столкнулся с аналогичной проблемой при переходе от новейшего jdk6 к последнему jdk7. Кажется, что ошибка в com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl. getCharacterOffset() returns incorrect value предлагает использовать другой синтаксический анализатор XML.

(переехал из комментария ответить)

EDIT: Я сделал некоторые более систематическое тестирование на это, и обнаружили случаи в JDK6, которые являются неправильными и в jdk7, которые прямо и также наоборот. Интересно, что значения строк и строк столбца кажутся согласованными и правильными для обоих jdk.