0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Jaxb (XJC) генерация классов из XML Schema (XSD) с описаниями классов и полей в виде аннотаций. XJC плагин

Как генерировать классы JAXB из XSD?

Я полный новичок с XML. Я делаю реализацию REST проекта Java EE, и мы возвращаем много XML. С этим мы решили использовать JAXB. До сих пор мы вручную кодировали модели для XML.

но есть уже эти сложные структуры, которые мы не знаем, как кодировать. Мы читали о создании классов из XSD. У нас есть XSD.

1.) Я читал о XJC, где я могу его найти?

2.) Мы должны установить всего в JAXB? (так что мы использовали до сих пор? разве это не в JAXB?)

11 ответов

XJC включен в каталог bin в JDK, начиная с Java SE 6. Пример см. В разделе:

содержание блога являются следующие:

обработка Атом каналы с JAXB Atom-это формат XML для представления веб-каналов. Стандартный формат позволяет приложениям reader отображать каналы из разных источники. В этом примере мы будем обрабатывать канал Atom для этого блога.

демо

в этом примере мы будем использовать JAXB для преобразования канала Atom XML, соответствующего этому блогу, в объекты, а затем обратно в XML.

модель JAXB

следующая модель была сгенерирована схемой компилятора Java (XJC). Я опустил методы get/set и комментарии для сохранения пространство.

Читать еще:  Victoria privileged instruction что делать?

параметра entrytype, которые могут

на Eclipse STS (3.5 по крайней мере) вам не нужно ничего устанавливать. Правой Кнопкой Мыши на схеме.xsd-Файл -> Создать -> JAXB-классы. вы должны указать пакет и местоположение на следующем шаге и все ваши классы должны быть созданы. Я думаю, что все вышеперечисленные решения работают, но это кажется самым простым (для пользователей STS).

[обновление] Eclipse STS версии 3.6 (на основе Kepler) поставляется с тем же функциональность.

1) Вы можете использовать стандартную утилиту Java хотя XJC — ([ваш Java home dir]binxjc.исполняемый.) Но вам нужно творить .летучая мышь (или .sh) скрипт для его использования.

например, создать.летучая мышь:

например, тест-схеме.имя xsd:

Run .bat файл с параметрами: generate.схема испытаний летучих мышей.xsd-d [ваш src dir]

для получения дополнительной информации используйте эту документацию -http://docs.oracle.com/javaee/5/tutorial/doc/bnazg.html

2) JAXB (утилита xjc) устанавливается вместе с jdk6 по умолчанию.

dev64

Programming

Практический пример использования XML schema и JAXB

Галерея

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

После написания данного поста, позже сделал ещё ряд постов о JAXB. Получилась небольшая серия.

Оглавление

Введение

Допустим, мне нужно реализовать Web Service для работы с книгами. В зависимости от типа запроса, сервис может возвращать различные варианты ответов.

В документе result обязательный элемент code, содержащий код успеха операции OK или NOK.
Элемент description необязательный, он содержит словесное описание ошибки, если таковая случилась.
Остальные элементы тоже необязательные. Это либо элемент book — книга, с описанием книги. Либо элемент books — список книг

Примеры XML

Результат содержит bookId

Читать еще:  Создатель World Wide Web Тим Бернерс-Ли изменил мир, но сам остался прежним

Ошибочный результат

Результат содержит данные о книге

Результат содержит данные список книг

Мне нужно реализовать работу с вышеприведенными XML с использованием JAXB. Задача состоит в том, чтобы JAXB автоматически преобразовывал XML в Java объекты и обратно и сообщал при этом об ошибках, если таковые присутствуют в XML документе. Т.е. документ должен валидироваться на соответствие XML схеме.

Работа с JAXB в целом делается так.

  • Для XML пишется XML схема в виде xsd файла
  • Используя утилиту xjc из стандартной поставки Java JDK генерируете из схемы набор классов.
  • Классы включаются в программу. JAXB marshaller используется для генерации XML из объектов, unmarshaller — для получения объектов из XML

Я для описанного сервиса написал нижеприведенную схему. Опускаю промежуточные неудачные варианты. Просто упомяну тонкие моменты. См. под примером схемы.

В схеме обязательно должно присутствовать ключевое слово elementFormDefault=»qualified». Ещё один тонкий момент — обязательно при описании типов использовать в них явно указанный namespace и ссылаться на него: >

XJC Command Usage

3. XJC in Action: Generating classes form XSD

To see the command XJC in action, we will need an XSD file. We will be using following XSD file in our example.

To run the command, we shall browse to the directory having the xsd file, and then we shall execute following command:
xjc -d src -p com.javacodegeeks.examples.xjc Employee.xsd

Here -d specifies to which folder generated classes shall go. In this case it shall be src directory, make sure that the target directory exists. -p specifies the target package structure. In this case it would be com.javacodegeeks.examples.xjc

Following shall be the output of above command:

Читать еще:  Каково главное преимущество использования программы проводник

And we can see the package structure is created in the desired manner:

Now let us see the java files created.

We can see that Employee.java also has static class Address as it was desired.

Also we can see that an unexpected ObjectFactory.java is also created. This contains factory methods to create objects of classes created. This can come into use when creating JAXBElement representation of objects.

4. Conclusion

In this example, we learnt what is XJC , how to generate binding Java classes from an XSD, and the sample code generated. The code generated was the desired class type and the object factory that can be used to create objects of the generated class.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector