Spec-Zone .ru
спецификации, руководства, описания, API
След: Архитектура Java для XML, Связывающего (JAXB)
Урок: Введение в JAXB
Примеры JAXB
Домашняя страница > Архитектура Java для XML, Связывающего (JAXB) > Введение в JAXB

Примеры JAXB

Следующие разделы описывают, как использовать примеры приложения, которые включаются в пакет RI JAXB. Пакет RI JAXB доступен от http://jaxb.java.net. Загрузите и установите пакет RI JAXB. Примеры располагаются в jaxb-ri-install/samples/ каталоге. Эти примеры демонстрируют и полагаются на функции ключа JAXB и понятия. Следуйте за этими процедурами в представленном порядке.

После чтения этого раздела следует чувствовать себя довольными достаточно JAXB, что Вы можете:

Этот документ описывает три набора примеров:


Отметьте: основные и настраивают примеры, основаны на сценарии Заказа на поставку. Каждый использует XML-документ, po.xml, записанный против XML-схемы, po.xsd. Эти документы получаются из Части 0 XML-схемы W3C: Учебник для начинающих, отредактированный Дэвидом К. Фаллсайдом.

Основные и настраивают каталоги в качестве примера, содержат несколько основных файлов:

Следующие таблицы кратко описывают основное, настраивают, и Java к схеме примеры JAXB.

Таблица: Основные Примеры JAXB

Имя в качестве примера Описание
Измените Упорядочивают Демонстрирует, как изменить дерево контента Java.
Неупорядочьте Проверяют Демонстрирует, как включить проверке допустимости во время немаршалинга.

Таблица: Настройте Примеры JAXB

Имя в качестве примера Описание
Настройте Встроенный Демонстрирует, как настроить значение по умолчанию привязка JAXB при использовании встроенных аннотаций в XML-схеме.
Преобразователь типа данных Иллюстрирует альтернативную, более краткую привязку XML определения simpleType типам данных Java, и подобен, чтобы Настроить Встроенный пример.
Внешний Настраивают Иллюстрирует, как использовать внешний обязательный файл объявлений, чтобы передать обязательные настройки для схемы только для чтения к JAXB обязательный компилятор.


Таблица: Java к схеме Примеры JAXB

Имя в качестве примера Описание
Создайте Упорядочивают Демонстрирует, как использовать ObjectFactory class, чтобы создать дерево контента Java и упорядочить это к данным XML. Это также демонстрирует, как добавить контент к свойству JAXB List.
XmlAccessorOrder Иллюстрирует, как использовать @XmlAccessorOrder и аннотации отображения @XmlType.propOrder в классах Java, чтобы управлять порядком, в котором контент XML упорядочивается или неупорядочивается по типу Java.
XmlAdapter Иллюстрирует, как использовать интерфейс XmlAdapter и аннотация @XmlJavaTypeAdapter, чтобы обеспечить пользовательское отображение контента XML в и из HashMap (поле), которое использует interger (int) в качестве ключа и строки (String) как значение.
XmlAttribute Иллюстрирует, как использовать аннотацию @XmlAttribute, чтобы определить свойство или поле, которое будет обработано как атрибут XML.
XmlRootElement Иллюстрирует, как использовать аннотацию @XmlRootElement, чтобы определить имя элемента XML для типа XML-схемы соответствующего class.
Класс XmlSchemaType Иллюстрирует, как использовать аннотацию @XmlSchemaType, чтобы настроить отображение свойства или поля к XML встроенный тип.
XmlType Иллюстрирует, как использовать аннотацию @XmlType, чтобы отобразить class или тип enum к типу XML-схемы.

Опции Компилятора JAXB

JAXB XJC схема обязательный компилятор преобразовывает, или связывает, исходная XML-схема к ряду классов контента JAXB в языке программирования Java. Компилятор class, xjc, обеспечивается как: xjc.sh на Солярисе/Linux и xjc.bat на Windows в пакете RI JAXB. xjc class включается в JDK библиотека class (в tools.jar).

И xjc.sh и xjc.bat берут те же самые параметры командной строки. Можно вывести на экран быстрые инструкции использования, вызывая сценарии без любых опций, или с переключателем -help. Синтаксис следующие:

xjc [-options ...] <schema file/URL/dir/jar>... [-b >bindinfo<] ...

Если dir будет определен, то все файлы схемы в каталоге будут скомпилированы. Если jar будет определен,/META-INF/sun-jaxb.episode то обязательный файл будет скомпилирован.

Параметры командной строки xjc следующие:

-nv
Не выполняйте строгую проверку допустимости входной схемы или схем. По умолчанию xjc выполняет строгую проверку допустимости исходной схемы перед обработкой. Отметьте, что это не означает, что обязательный компилятор не будет выполнять проверки допустимости; это только выполнит менее - строгая проверка допустимости.
-extension
По умолчанию XJC обязательный компилятор строго осуществляет правила, обрисованные в общих чертах в главе Совместимости Спецификации JAXB. В значении по умолчанию (строгий) режим Вы также ограничиваетесь использованием только обязательных настроек, определенных в спецификации. При использовании переключателя -extension Вам разрешают использовать Расширения Поставщика JAXB.
Файл -b
Определите один или более внешних обязательных файлов, чтобы обработать. (У каждого обязательного файла должен быть свой собственный переключатель -b.) Синтаксис внешних обязательных файлов гибок. У Вас может быть единственный обязательный файл, который содержит настройки для многократных схем, или можно повредить настройки в многократные файлы привязки. Кроме того, упорядочивание файлов схемы и обязательных файлов на командной строке не имеет значения.
dir -d
По умолчанию XJC обязательный компилятор генерирует классы контента Java в текущем каталоге. Используйте эту опцию, чтобы определить альтернативный выходной каталог. Каталог должен уже существовать; XJC обязательный компилятор не создает один для Вас.
Пакет -p
Определите альтернативный выходной каталог. По умолчанию XJC обязательный компилятор генерирует классы контента Java в текущем каталоге. Выходной каталог должен уже существовать; XJC обязательный компилятор не создает один для Вас.
Прокси -httpproxy
Определите прокси HTTP/HTTPS. Форматом является [user[:password]@]proxyHost[:proxyPort]. Старые опции -host И -port все еще поддерживаются Ссылочной Реализацией для обратной совместимости, но они были осуждены.
-httpproxyfile f
Работы как опция -httpproxy, но берут параметр в файле, чтобы защитить пароль.
Аргумент -classpath
Определите, где счесть клиентское приложение файлами class используемый настройками <xjc:superClass> и <jxb:javaType>.
Файл -catalog
Определите файлы каталога, чтобы разрешить внешние ссылки на сущность. Поддерживает TR9401, XCatalog, и XML ОАЗИСА формат Каталога. Для получения дополнительной информации см. XML Объект и документ Преобразователей URI или исследуйте пример приложения преобразователя каталога.
-readOnly
Вынудите XJC обязательный компилятор отметить сгенерированные источники Java как только для чтения. По умолчанию, XJC, обязательный компилятор не защищает от записи исходные файлы Java, которые это генерирует.
-npa
Подавите генерацию аннотаций уровня пакета в **/package-info.java. Используя этот переключатель заставляет сгенерированный код усваивать те аннотации в другие сгенерированные классы.
-no-header
Подавите генерацию заголовка файла с меткой времени.
-target (2.0|2.1)
Ведите себя как XJC 2.0 или 2.1 и генерируйте код, что doesnt используют любой XJC 2.2 функции.
-enableIntrospection
Позвольте корректной генерации Булевых методов get/методов set включить Бобовой пчеле Самоанализа.
-contentForWildcard
Генерирует свойство контента для типов с многократным xs:any полученные элементы.
-xmlschema
Обработайте входные схемы как XML-схему W3C (значение по умолчанию). Если Вы не определяете этот переключатель, Ваши входные схемы обрабатываются как XML-схема W3C.
-verbose
Будьте дополнительны многословный в выходе компилятора.
-quiet
Подавите выход компилятора, такой как информация о продвижении и предупреждения.
-help
Выведите на экран краткую сводку переключателей компилятора.
-version
Выведите на экран информацию о версии компилятора.
-fullversion
Выведите на экран компилятор полная информация о версии.
-Xinject-code
Введите определенные фрагменты кода Java в сгенерированный код.
-Xlocator
Включите исходной поддержке расположения сгенерированного кода.
-Xsync-methods
Генерируйте методы средства доступа с ключевым словом synchronized.
-mark-generated
Отметьте сгенерированный код с -@javax.annotation. Сгенерированная аннотация.
-episode FILE
Генерируйте файл эпизода для раздельной компиляции.

Опция Генератора Схемы JAXB

Генератор Схемы JAXB, schemagen, создает файл схемы для каждого пространства имен, на которое ссылаются в Ваших классах Java. Генератор схемы может быть запущен при использовании соответствующего сценария оболочки schemagen в каталоге bin для Вашей платформы. Генератор схемы обрабатывает исходные файлы Java только. Если Ваши источники Java ссылаются на другие классы, те источники должны быть доступными от Вашей системной переменной окружения ПУТИ К КЛАССУ; иначе ошибки произойдут, когда схема будет сгенерирована. Нет никакого способа управлять именем сгенерированных файлов схемы.

Можно вывести на экран быстрые инструкции использования, вызывая сценарии без любых опций или при использовании опции -help. Синтаксис следующие:

schemagen [-d path] 
    [java-source-files]

Опция пути -d определяет расположение сгенерированного процессором, и javac - генерировал файлы class.

О Привязке Схемы к Java

Когда Вы работаете, JAXB обязательный компилятор против XML-схемы po.xsd, используемой в основных примерах (Неупорядочьте Чтение, Измените, Упорядочивают, Неупорядочивают, Проверяют), JAXB, обязательный компилятор генерирует пакет Java под названием primer.po, содержащий классы, описанные в следующей таблице.

Таблица: полученные из схемы Классы JAXB в Основных Примерах

Класс Описание
primer/po/Items.java Открытый интерфейс, который связывает со схемой complexType по имени Items.
primer/po/ObjectFactory.java Общедоступный class, расширяющий com.sun.xml.bind.DefaultJAXBContextImpl; используемый, чтобы создать экземпляры указанных интерфейсов. Например, метод ObjectFactory createComment() инстанцирует объекта Comment.
primer/po/PurchaseOrderType.java Открытый интерфейс, который связывает со схемой complexType по имени PurchaseOrderType.
primer/po/USAddress.java Открытый интерфейс, который связывает со схемой complexType по имени USAddress.

Эти классы и их определенная привязка к исходной XML-схеме для основных примеров описываются в следующей таблице.

Таблица: Привязка схемы к Java для Основных Примеров

XML-схема Привязка JAXB
<xsd:schema xmlns:xsd=
 "http://www.w3.org/2001/XMLSchema">
 
<xsd:complexType 
  name="PurchaseOrderType">
  <xsd:sequence>
    <xsd:element 
      name="shipTo" 
      type="USAddress"/>
    <xsd:element 
      name="billTo" 
      type="USAddress"/>
    <xsd:element 
      ref="comment" 
      minOccurs="0"/>
    <xsd:element 
      name="items"
      type="Items"/>
  </xsd:sequence>
  <xsd:attribute 
    name="orderDate"
    type="xsd:date"/>
</xsd:complexType>
PurchaseOrderType.java
<xsd:complexType 
  name="USAddress">
  <xsd:sequence>
    <xsd:element 
      name="name" 
      type="xsd:string"/>
    <xsd:element 
      name="street" 
      type="xsd:string"/>
    <xsd:element 
      name="city" 
      type="xsd:string"/>
    <xsd:element 
      name="state" 
      type="xsd:string"/>
    <xsd:element 
      name="zip" 
      type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute 
    name="country" 
    type="xsd:NMTOKEN" 
    fixed="US"/>
</xsd:complexType>
USAddress.java
<xsd:complexType 
  name="Items">
  <xsd:sequence>
    <xsd:element 
      name="item" 
      minOccurs="1" 
      maxOccurs="unbounded">
Items.java
<xsd:complexType>
  <xsd:sequence>
    <xsd:element 
      name="productName" 
      type="xsd:string"/>
    <xsd:element 
      name="quantity">
      <xsd:simpleType>
        <xsd:restriction 
          base="xsd:positiveInteger">
          <xsd:maxExclusive 
            value="100"/>
        </xsd:restriction>
      </xsd:simpleType>
    </xsd:element>
    <xsd:element 
      name="USPrice" 
      type="xsd:decimal"/>
    <xsd:element 
      ref="comment" 
      minOccurs="0"/>
    <xsd:element 
      name="shipDate" 
      type="xsd:date" 
      minOccurs="0"/>
  </xsd:sequence>
  <xsd:attribute 
    name="partNum" 
    type="SKU" 
    use="required"/>
</xsd:complexType>
Items.ItemType
</xsd:element>
</xsd:sequence>
</xsd:complexType>
 
<!-- Stock Keeping Unit, a code for 
    identifying products -->
 
<xsd:simpleType 
  name="SKU">
  <xsd:restriction 
    base="xsd:string">
    <xsd:pattern 
      value="\d{3}-[A-Z]{2}"/>
  </xsd:restriction>
</xsd:simpleType>
 
</xsd:schema>
 

Полученные из схемы Классы JAXB

Следующие разделы кратко объясняют функции следующих отдельных классов, сгенерированных JAXB обязательный компилятор для примеров:

Класс Items

В Items.java:

Класс ObjectFactory

В ObjectFactory.java:

Как пример, в этом случае, для Java соединяют интерфейсом с primer.po.Items.ItemType, ObjectFactory создает метод createItemsItemType().

Класс PurchaseOrderType

В PurchaseOrderType.java:

Класс USAddress

В USAddress.java:


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Настройка Сгенерированных Классов и Элементов Программы Java
Следующая страница: Основные Примеры