Я искал способ изменить поведение JAXB для xs: любые элементы, потому что мы используем поток вместо DOM. Нам нужно уметь обрабатывать огромные (гигабайты) файлы / потоки данных.
JAXB сгенерирует любые свойства, используя для них аннотацию @XmlAnyElement. Поскольку мы используем нашу собственную потоковую реализацию, нам нужно вообще избегать генерации JAXB свойства any-свойства. Однако, как кажется, невозможно заставить привязку JAXB игнорировать xs: любые элементы.
В моем текущем исследовании этой темы я выяснил, что можно написать DomHandler, который будет использоваться. Теперь, если этот DomHandler будет выглядеть так:
StreamHandler implements DomHandler<MyStream, StreamResult>
мы могли бы использовать этот DomHandler для выполнения работы без необходимости добавлять логику потока рядом с нашими сгенерированными классами. Теперь мы можем просто использовать сгенерированное свойство any-свойство для этого.
DomHandler должен быть установлен следующим образом
@XmlAnyElement(StreamHandler.class)
Но как я могу определить в xax-файле привязки jaxb использование этого DomHandler в сгенерированных аннотациях @XmlAnyElement?
Edit:
Я подал этот запрос и внедрил аддон maven-plugin JAXB для решения этой проблемы. Я могу попросить добавить это дополнение в пакет basics-addon.