Spec-Zone .ru
спецификации, руководства, описания, API


javax.xml.bind.annotation
Тип аннотации XmlType


@Retention(value=RUNTIME)
@Target(value=TYPE)
public @interface XmlType

Отображает class или перечислимый тип к типу XML-схемы.

Использование

@XmlType annnotation может использоваться со следующими элементами программы:

См. "Спецификацию Пакета" в javax.xml.bind.package javadoc для дополнительной общей информации.

Отображение Класса

class отображается на тип XML-схемы. class является контейнером данных для значений, представленных свойствами и полями. Тип схемы является контейнером данных для значений, представленных компонентами схемы в пределах модели контента типа схемы (например, группы модели, атрибуты и т.д.).

Чтобы быть отображенным, у class должны или быть общедоступный конструктор без аргументов или статический метод фабрики без аргументов. Статический метод фабрики может быть определен в factoryMethod() и элементах аннотации factoryClass(). Статический метод фабрики или конструктор без аргументов используются во время немаршалинга, чтобы создать экземпляр этого class. Если оба присутствуют, статический метод фабрики переопределяет конструктора без аргументов.

class отображается или на составной тип XML-схемы или на XML-схему простой тип. Тип XML-схемы получается основанный на отображении свойств JavaBean и полей, содержавших в пределах class. Тип схемы, на который отображается class, можно или назвать или анонимный. class может быть отображен на анонимный тип схемы, аннотируя class с @(name="").

Или глобальный элемент, локальный элемент или локальный атрибут могут быть связаны с анонимным типом следующим образом:

Отображение на Составной тип XML-схемы

Отображение class к XML-схеме простой тип

class может быть отображен на XML-схему простой тип, используя аннотацию @XmlValue. Для дополнительных деталей и примеров, см.XmlValue тип аннотации.

Следующая таблица показывает отображение class к составному типу XML-схемы или простому типу. Письменные символы, используемые в таблице:

Цель propOrder ClassBody ComplexType SimpleType
Класс {} [свойство] +-> элементы complexcontent
xs:all
Класс не пустой [свойство] +-> элементы complexcontent
xs:sequence
Класс X никакое свойство-> элемент complexcontent
пустая последовательность
Класс X 1 [свойство @XmlValue] &&
[свойство] +-> атрибуты
simplecontent
Класс X 1 [свойство @XmlValue] &&
никакие свойства-> атрибут
simpletype

Отображение перечислимого типа

Перечислимый тип отображает на XML-схему простой тип с фасетами перечисления. Следующие элементы аннотации игнорируются, так как они не значимы: propOrder(), factoryMethod(), factoryClass().

Использование с другими аннотациями

Эта аннотация может использоваться со следующими аннотациями: XmlRootElement, XmlAccessorOrder, XmlAccessorType, XmlEnum. Однако, XmlAccessorOrder и XmlAccessorType игнорируются, когда эта аннотация используется на перечислимом типе.

Пример 1: Отобразите class на составной тип с xs:sequence со специализированным упорядочиванием свойств JavaBean.

   @XmlType(propOrder={"street", "city" , "state", "zip", "name" })
   public class USAddress {
     String getName() {..};
     void setName(String) {..};
 
     String getStreet() {..};
     void setStreet(String) {..};

     String getCity() {..}; 
     void setCity(String) {..};
 
     String getState() {..};
     void setState(String) {..};

     java.math.BigDecimal getZip() {..};
     void setZip(java.math.BigDecimal) {..};
   }

   <!-- XML Schema mapping for USAddress -->
   <xs:complexType name="USAddress">
     <xs:sequence>
       <xs:element name="street" type="xs:string"/>
       <xs:element name="city" type="xs:string"/>
       <xs:element name="state" type="xs:string"/>
       <xs:element name="zip" type="xs:decimal"/>
       <xs:element name="name" type="xs:string"/>
     </xs:all>
   </xs:complexType> 
 

Пример 2: Отобразите class на составной тип с xs:all

 @XmlType(propOrder={})
 public class USAddress { ...}
 
 <!-- XML Schema mapping for USAddress -->
 <xs:complexType name="USAddress">
   <xs:all>
     <xs:element name="name" type="xs:string"/>
     <xs:element name="street" type="xs:string"/>
     <xs:element name="city" type="xs:string"/>
     <xs:element name="state" type="xs:string"/>
     <xs:element name="zip" type="xs:decimal"/>
   </xs:sequence>
 </xs:complexType>

Пример 3: Отобразите class на глобальный элемент с анонимным типом.

   @XmlRootElement
   @XmlType(name="")
   public class USAddress { ...}

   <!-- XML Schema mapping for USAddress -->
   <xs:element name="USAddress">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="name" type="xs:string"/>
         <xs:element name="street" type="xs:string"/>
         <xs:element name="city" type="xs:string"/>
         <xs:element name="state" type="xs:string"/>
         <xs:element name="zip" type="xs:decimal"/>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
 

Пример 4: Отобразите свойство на локальный элемент с типом anonmyous.

   //Example: Code fragment
   public class Invoice {
       USAddress addr;
           ...
       }

   @XmlType(name="")
   public class USAddress { ... }
   } 

   <!-- XML Schema mapping for USAddress -->
   <xs:complexType name="Invoice">
     <xs:sequence>
       <xs:element name="addr">
         <xs:complexType>
           <xs:element name="name", type="xs:string"/>
           <xs:element name="city", type="xs:string"/>
           <xs:element name="city" type="xs:string"/>
           <xs:element name="state" type="xs:string"/>
           <xs:element name="zip" type="xs:decimal"/>
         </xs:complexType>
       ...
     </xs:sequence>
   </xs:complexType> 
 

Пример 5: Отобразите свойство на атрибут с анонимным типом.


     //Example: Code fragment
     public class Item {
         public String name;
         @XmlAttribute 
         public USPrice price;
     }
    
     // map class to anonymous simple type. 
     @XmlType(name="")
     public class USPrice { 
         @XmlValue
         public java.math.BigDecimal price;
     }

     <!-- Example: XML Schema fragment -->
     <xs:complexType name="Item">
       <xs:sequence>
         <xs:element name="name" type="xs:string"/>
         <xs:attribute name="price">
           <xs:simpleType>
             <xs:restriction base="xs:decimal"/>
           </xs:simpleType>
         </xs:attribute>
       </xs:sequence>
     </xs:complexType>
 

Пример 6: Определите factoryClass и factoryMethod

 
      @XmlType(name="USAddressType", factoryClass=USAddressFactory.class,
      factoryMethod="getUSAddress")
      public class USAddress {

          private String city;
          private String name;
          private String state;
          private String street;
          private int    zip;

      public USAddress(String name, String street, String city, 
          String state, int zip) {
          this.name = name;
          this.street = street;
          this.city = city;
          this.state = state;
          this.zip = zip;
      }
  }

  public class USAddressFactory {
      public static USAddress getUSAddress(){
       return new USAddress("Mark Baker", "23 Elm St", 
          "Dayton", "OH", 90952);
  }

 

Пример 7: Определите factoryMethod и используйте значение по умолчанию factoryClass

      @XmlType(name="USAddressType", factoryMethod="getNewInstance")
      public class USAddress {

          private String city;
          private String name;
          private String state;
          private String street;
          private int    zip;

          private USAddress() {}

          public static USAddress getNewInstance(){
              return new USAddress();
          }
      }
 

С тех пор:
JAXB2.0
Автор:
Sekhar Vajjhala, Sun Microsystems, Inc.
См. Также:
XmlElement, XmlAttribute, XmlValue, XmlSchema

Дополнительная Сводка Элемента
 java.lang.Class factoryClass
          Класс, содержащий метод фабрики без аргументов для того, чтобы создать экземпляр этого class.
 java.lang.String factoryMethod
          Имя метода фабрики без аргументов в class, определенном в factoryClass factoryClass ().
 java.lang.String имя
          Имя типа XML-схемы, который отображается class.
 java.lang.String пространство имен
          Имя целевого пространства имен типа XML-схемы.
 java.lang.String[] propOrder
          Определяет порядок на элементы XML-схемы, когда class отображается на составной тип XML-схемы.
 

имя

public abstract java.lang.String name
Имя типа XML-схемы, который отображается class.

Значение по умолчанию:
"##default"

propOrder

public abstract java.lang.String[] propOrder
Определяет порядок на элементы XML-схемы, когда class отображается на составной тип XML-схемы.

Обратитесь к таблице для того, как propOrder влияет на отображение class

propOrder является списком имен свойств JavaBean в class. Каждое имя в списке является именем идентификатора Java свойства JavaBean. Порядок, в котором перечисляются свойства JavaBean, является порядком элементов XML-схемы, на которые отображаются свойства JavaBean.

Должны быть перечислены все свойства JavaBean, отображаемые на элементы XML-схемы.

Свойство JavaBean или поле, перечисленное в propOrder, не должны быть переходным процессом или аннотируемый @XmlTransient.

Упорядочивание значения по умолчанию свойств JavaBean определяетсяXmlAccessorOrder.

Значение по умолчанию:
""

пространство имен

public abstract java.lang.String namespace
Имя целевого пространства имен типа XML-схемы. По умолчанию это - целевое пространство имен, на которое отображается пакет, содержащий class.

Значение по умолчанию:
"##default"

factoryClass

public abstract java.lang.Class factoryClass
Класс, содержащий метод фабрики без аргументов для того, чтобы создать экземпляр этого class. Значением по умолчанию является этот class.

Если factoryClass является Значение по умолчанию class, и factoryMethod"", тогда нет никакого статического метода фабрики.

Если factoryClass является Значение по умолчанию class, и factoryMethod не"", тогда factoryMethod является именем статического метода фабрики в этом class.

Если factoryClass не является Значение по умолчанию class, то factoryMethod не должен быть "" и должен быть именем статического метода фабрики, определенного в factoryClass.

Значение по умолчанию:
javax.xml.bind.annotation.XmlType.DEFAULT.class

factoryMethod

public abstract java.lang.String factoryMethod
Имя метода фабрики без аргументов в class, определенном в factoryClass factoryClass ().

Значение по умолчанию:
""


Представьте ошибку или функцию

Авторское право © 2009-2011, Oracle Corporation и/или его филиалы. Все права защищены. Использование подвергается срокам действия лицензии.

Сгенерированный на 10-February-2011 12:41

free hit counter