Разбор XML во время выполнения на основе XSD с помощью JAXB 2.x

У вас есть требование, поэтому мы хотим проверить его осуществимость. Мы используем JAXB 2.x для преобразования XML в существующие классы POJO. Ниже приведен процесс, которому мы следуем.

  1. На основе предоставленного XSD мы уже создали необходимые классы с помощью утилиты JAXB.
  2. Во время выполнения мы передаем только XML-файл, и мы сначала проверяем XML с помощью уже существующего XSD, и в случае успеха мы перейдем к Unmarshling.
  3. Для создания XML тот же процесс, но в обратном порядке.

Теперь есть одно требование, поэтому клиент хочет, чтобы он мог передавать XML и XSD в разрабатываемый метод, и этот метод должен передавать общий объект в качестве возврата путем анализа этого XML, а позже они будут обрабатывать процесс сопоставления этого универсального объекта с конкретные классы.

Мой вопрос: возможно ли в Jaxb 2.x, что на основе предоставленного XSD он сначала создаст необходимые классы на лету, а затем проанализирует XML и передаст результат клиентскому модулю, чтобы они могли выполнить сопоставление или есть ли способ добиться этой функциональности ??

заранее спасибо


person Umesh Awasthi    schedule 07.12.2010    source источник


Ответы (3)


В EclipseLink MOXy (я технический руководитель) у нас есть функция Dynamic JAXB. , который позволяет выполнять загрузку из XML-схемы и использовать универсальные объекты. Вы можете найти этот подход полезным:

person bdoughan    schedule 07.12.2010

Я знаю, что это выполнимо. Один студент в моей лаборатории сделал почти то же самое по другому предмету. Тем не менее, вам придется поиграть с загрузчиком классов, чтобы иметь возможность динамически загружать созданные вами классы. Как только это будет сделано, вы можете проанализировать XML с помощью загрузчика классов, который включает новые классы.

Конечно, это не так просто, как кажется...

person Francis B    schedule 07.12.2010
comment
tutorials.jenkov.com/java-reflection/ это хорошая отправная точка. Дело в том, что я этого не делал... - person Francis B; 07.12.2010
comment
Другая проблема заключается в том, что для получения проанализированного объекта из JAXB вам нужно будет использовать класс Object, поскольку вы заранее не знаете XSD. это означает, что вы в основном не можете делать ничего, кроме отражения для управления данными. - person Francis B; 07.12.2010

Взгляните на примеры примеров/inline-customize, расположенные по адресу http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/2.0/jaxb/samples.html

person NicM    schedule 07.12.2010