Как написать внешний файл привязки для xjc? - PullRequest
15 голосов
/ 10 ноября 2009

Документация JAXB xjc гласит:

-b Укажите один или несколько внешних файлов привязки для обработки. (Каждый файл привязки должен иметь свой собственный ключ "-b".) Синтаксис внешних файлов привязки чрезвычайно гибок. У вас может быть один файл привязки, который содержит настройки для нескольких схем, или вы можете разбить настройки на несколько файлов привязки:

   xjc schema1.xsd schema2.xsd schema3.xsd -b bindings123.xjb

   xjc schema1.xsd schema2.xsd schema3.xsd 
         -b bindings1.xjb -b bindings2.xjb -b bindings3.xjb 

Кроме того, порядок файлов схемы и файлов привязки в командной строке не имеет значения.

Но где я могу найти документацию по этому "внешнему файлу привязки"?

1 Ответ

7 голосов
/ 26 марта 2016

Внешний файл привязки задокументирован на странице Настройка привязок JAXB на oracle.com

Цитата:

Файлы настройки внешнего связывания

Настройки привязок JAXB, выполненные с помощью внешнего файла, содержащего объявления привязок, принимают общую форму, показанную ниже.

<jxb:bindings schemaLocation = "xs:anyURI">
   <jxb:bindings node = "xs:string">*
      <binding declaration>
   <jxb:bindings>
</jxb:bindings> 

schemaLocation - ссылка URI на удаленную схему node - это выражение XPath 1.0, которое идентифицирует узел схемы в schemaLocation, с которым связано данное объявление привязки. Например, первое объявление schemaLocation / node в файле объявлений привязки JAXB указывает имя схемы и корневой узел схемы:

<jxb:bindings schemaLocation="po.xsd" node="/xs:schema"> 

Последующее объявление schemaLocation / node, скажем, для элемента simpleType с именем ZipCodeType в приведенной выше схеме, будет иметь вид:

<jxb:bindings node="//xs:simpleType[@name='ZipCodeType']"> 

Смотрите также; Опции компилятора JAXB


Другим хорошим источником информации о файле внешней привязки является oreilly . Пример файла привязки из oreilly :

Цитата:

Листинг 11. Использование внешнего файла привязки

<jxb:bindings version="1.0" 
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
  jxb:extensionBindingPrefixes="xjc">
    <jxb:bindings schemaLocation="po4.xsd" node="/xs:schema">
        <jxb:globalBindings>
            <xjc:superClass name="com.syh.Shape"/>
            <xjc:serializable uid="12343"/>
        </jxb:globalBindings>
        <jxb:bindings node="//xs:element[@name='Widgets']//xs:complexType//xs:choice">
            <jxb:property name="Shapes"/>
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>
...