Разбор XML в RunTime на основе XSD с JAXB 2.x - PullRequest
1 голос
/ 07 декабря 2010

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 07 декабря 2010

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

0 голосов
/ 07 декабря 2010

Посмотрите образцы образцов / inline-customize находится по адресу http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/2.0/jaxb/samples.html

0 голосов
/ 07 декабря 2010

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

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

...