@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="").
Или глобальный элемент, локальный элемент или локальный атрибут могут быть связаны с анонимным типом следующим образом:
XmlRootElement
. См. Пример 3 ниже. Отображение 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
Эта аннотация может использоваться со следующими аннотациями: 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(); } }
XmlElement
, XmlAttribute
, XmlValue
, XmlSchema
Модификатор и Тип | Дополнительный Элемент и Описание |
---|---|
Класс |
factoryClass
Класс, содержащий метод фабрики без аргументов для того, чтобы создать экземпляр этого class.
|
Строка |
factoryMethod
Имя метода фабрики без аргументов в class, определенном в factoryClass factoryClass ().
|
Строка |
имя
Имя типа XML-схемы, который отображается class.
|
Строка |
пространство имен
Имя целевого пространства имен типа XML-схемы.
|
Строка[] |
propOrder
Определяет порядок на элементы XML-схемы, когда class отображается на составной тип XML-схемы.
|
public abstract String name
public abstract String[] propOrder
Обратитесь к таблице для того, как propOrder влияет на отображение class
propOrder является списком имен свойств JavaBean в class. Каждое имя в списке является именем идентификатора Java свойства JavaBean. Порядок, в котором перечисляются свойства JavaBean, является порядком элементов XML-схемы, на которые отображаются свойства JavaBean.
Должны быть перечислены все свойства JavaBean, отображаемые на элементы XML-схемы.
Свойство JavaBean или поле, перечисленное в propOrder, не должны быть переходным процессом или аннотируемый @XmlTransient.
Упорядочивание значения по умолчанию свойств JavaBean определяетсяXmlAccessorOrder
.
public abstract String namespace
public abstract Class factoryClass
Если factoryClass является Значение по умолчанию class, и factoryMethod"", тогда нет никакого статического метода фабрики.
Если factoryClass является Значение по умолчанию class, и factoryMethod не"", тогда factoryMethod является именем статического метода фабрики в этом class.
Если factoryClass не является Значение по умолчанию class, то factoryMethod не должен быть "" и должен быть именем статического метода фабрики, определенного в factoryClass.
public abstract String factoryMethod
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92