как получить экземпляр XMLEventAllocator? - PullRequest
1 голос
/ 23 декабря 2010

Я пытаюсь следовать рекомендованному способу синтаксического анализа XML с помощью StAX, используя пример курсора к событию sun для Java EE 5. Предполагается, что вы должны пройти через XML через Cursor API и выделитьXMLEvent, используя XMLEventAllocator при необходимости.


Неудобно, что собственный пример Sun не компилируется (по крайней мере, не с JDK 1.6, даже с соответствием кода 1.5).В примере делается попытка создания распределителя с помощью new, но соответствующие классы реализации в JDK не доступны извне.


После прочтения JavaDocs и поиска в Интернете я буквально ничего не нашел.


Можно было бы реализовать интерфейс XMLEventAllocator с нуля, но, похоже, это действительно неправильно, когдав JDK есть совершенно хорошие реализации, кроме того, что не специалист в StAX затрудняет правильное понимание.

Ответы [ 2 ]

2 голосов
/ 06 января 2011

Помимо поддержки предложения Блейза о прямом использовании API курсора, даже если вы действительно хотите использовать Event API, совершенно не нужно определять пользовательскую реализацию XMLEventAllocation.Вы можете сделать это, если хотите (например, добавить некоторые данные для передачи вместе с объектами Even), но это будет продвинутый метод.

Так что, если вы хотите использовать Event API, просто попросите XMLInputFactory создатьXMLEventReader, вот так:

XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(new FileInputStream("file.xml"));

или если у вас есть XMLStreamReader:

XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(streamReader);

и это все, что вам нужно сделать.

Мальчик, я понятия не имеюпочему в учебнике есть этот маленький глупый кусок кода - это не имеет никакого смысла.: -)

2 голосов
/ 23 декабря 2010

Я бы не использовал этот пример в качестве лучшей практики для использования StAX.С StAX у вас есть два подхода XMLStreamReader и XMLEventReader.Оба предоставляют вам API для доступа к событиям для глубинного обхода XML-документа.С помощью XMLStream reader вы можете запрашивать информацию у XMLStreamReader на основе типа события, а с XMLEventReader вам предоставляются объекты, представляющие исходное событие.

Я рекомендую напрямую использовать API XMLStreamReader.

...