Есть ли способ построить цепочку фильтров StAX? - PullRequest
3 голосов
/ 06 апреля 2011

Создание пользовательских преобразований для различных типов событий с StAX с использованием EventFilter и StreamFilter Я чувствую себя вынужденным в процедурную реализацию - извлекаю эти события и обрабатываю их, фильтрую эти события и обрабатываю их, чем соберите все результаты вместе и верните.

SAX , кажется, имеет действительно хорошую функцию - цепные фильтры на основе XMLFilters .
Я бы предпочел сохранить свою реализацию на основе StAX, но каким-то образом включить или эмулировать цепные фильтры из SAX.

Можно ли это сделать с разумными усилиями и каким образом? Уже есть реализация, которую я пропустил?

Из-за ограничений проекта я должен придерживаться JDK, поэтому, пожалуйста, не предлагайте использовать другую библиотеку в качестве ответа, но не стесняйтесь предлагать ее в комментариях - Я хотел бы знать, что там.

Ответы [ 2 ]

4 голосов
/ 06 апреля 2011

Взгляните на EventReaderDelegate и StreamReaderDelegate. Эти классы позволят вам обернуть родительское событие или потоковое читатель, чтобы вы могли вставить любую логику, какую захотите.

0 голосов
/ 30 июня 2011

Хотя вы можете использовать делегатов, я думаю, что одна из очень немногих областей, где SAX имеет преимущество над Stax, - это способность создавать эффективные модульные конвейеры. Stax более оптимален для подходов с рекурсивным спуском, а также для частичного связывания данных (может проходить поток; ручные чанки в JAXB, продолжить, очень просто, мощно).

...