Это все неправильный подход, так как все они в основном "бобовые" картографы. То есть конвертировать XML-документ в Java Bean. Для того, чтобы сделать это, вам в значительной степени придется всосать все это в машину.
Теперь, очевидно, есть "лучшие" способы, которыми это можно сделать. Например, на самом деле нет необходимости загружать весь XML DOM, чтобы отобразить бин, но я не знаю, как на самом деле JAXB и др. Выполняют их сериализацию. Я подозреваю, что они не беспокоятся о DOM, а скорее заполняют поля bean-компонентов напрямую, так как XML-поток передается. Это сохранит общую обработку, но вы все равно получите весь документ в ОЗУ как набор экземпляров классов.
Теперь, если вам нужен небольшой фрагмент XML-документа, вы можете рассмотреть реализацию StAX. Это DOM-подобный интерфейс поверх потокового парсера. Хотя, в конце концов, это может быть не очень хорошо, так как я думаю, что они работают, передавая столько документов, сколько необходимо, что означает, что если вам нужно что-то впереди, вы выигрываете, потому что это может отбросить все остальное. Но если вы хотите что-то в конце, я думаю, что это сохраняет большую часть того, что он видел до этого момента. Это тоже не хорошо.
Что оставляет вас с хорошим 'SAX. И все знают, что с SAX вы получаете блюз. Потому что это такой примитивный слой. Но он самый эффективный и дает вам максимальный контроль.
Отображение XSD будет трудным, просто потому, что прелесть структур отображения состоит в том, что они знают, что делать со всеми элементами (они создают экземпляры классов и помещают их в родительские классы). Вы хотите сделать что-то другое, что-то произвольное в произвольных точках.
SAX не так уж и плох, я написал хороший маленький грубый маппер, который позволяет вам делать то, что вы хотите делать, за исключением того, что вы должны вручную писать код, а не использовать XSD, и это в Obj-C, не Java. Но в основном он прошел XML-поток и искал сеттеры для классов на основе имени пути. Это заменило типичные огромные цепочки "if element =" name "..." в обратном вызове элемента, который вы получаете с кодом SAX.
Не тот ответ, который вы искали, я уверен ... будьте счастливы, если я ошибся.