Spec-Zone .ru
спецификации, руководства, описания, API
|
@Retention(value=RUNTIME) @Target(value=TYPE) public @interface XmlType
Отображает класс или перечислимый тип к типу XML-схемы.
Использование
@XmlType annnotation может использоваться со следующими элементами программы:
См. "Спецификацию Пакета" в javax.xml.bind.package javadoc для дополнительной общей информации.
Класс отображается на тип XML-схемы. Класс является контейнером данных для значений, представленных свойствами и полями. Тип схемы является контейнером данных для значений, представленных компонентами схемы в пределах модели контента типа схемы (например, группы модели, атрибуты и т.д.).
Чтобы быть отображенным, у класса должны или быть общедоступный конструктор без аргументов или статический метод фабрики без аргументов. Статический метод фабрики может быть определен в factoryMethod() и элементах аннотации factoryClass(). Статический метод фабрики или конструктор без аргументов используются во время немаршалинга, чтобы создать экземпляр этого класса. Если оба присутствуют, статический метод фабрики переопределяет конструктора без аргументов.
Класс отображается или на составной тип XML-схемы или на XML-схему простой тип. Тип XML-схемы получается основанный на отображении свойств JavaBean и полей, содержавших в пределах класса. Тип схемы, на который отображается класс, можно или назвать или анонимный. Класс может быть отображен на анонимный тип схемы, аннотируя класс с @(name="").
Или глобальный элемент, локальный элемент или локальный атрибут могут быть связаны с анонимным типом следующим образом:
XmlRootElement
. См. Пример 3 ниже. Отображение класса XML-схемы простой тип
Класс может быть отображен на XML-схему простой тип, используя аннотацию @XmlValue. Для дополнительных деталей и примеров, см.XmlValue
тип аннотации.
Следующая таблица показывает отображение класса составного типа 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: Отобразите класс составного типа с 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: Отобразите класс составного типа с 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: Отобразите класс глобального элемента с анонимным типом.
@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
Класс, содержащий метод фабрики без аргументов для того, чтобы создать экземпляр этого класса.
|
Строка |
factoryMethod
Имя метода фабрики без аргументов в классе, определенном в factoryClass factoryClass ().
|
Строка |
имя
Имя типа XML-схемы, который отображается класс.
|
Строка |
пространство имен
Имя целевого пространства имен типа XML-схемы.
|
Строка[] |
propOrder
Определяет порядок на элементы XML-схемы, когда класс отображается на составной тип XML-схемы.
|
public abstract String name
public abstract String[] propOrder
Обратитесь к таблице для того, как propOrder влияет на отображение класса
propOrder является списком имен свойств JavaBean в классе. Каждое имя в списке является именем идентификатора Java свойства JavaBean. Порядок, в котором перечисляются свойства JavaBean, является порядком элементов XML-схемы, на которые отображаются свойства JavaBean.
Должны быть перечислены все свойства JavaBean, отображаемые на элементы XML-схемы.
Свойство JavaBean или поле, перечисленное в propOrder, не должны быть переходным процессом или аннотируемый @XmlTransient.
Упорядочивание по умолчанию свойств JavaBean определяетсяXmlAccessorOrder
.
public abstract String namespace
public abstract Class factoryClass
Если factoryClass является DEFAULT.class, и factoryMethod"", тогда нет никакого статического метода фабрики.
Если factoryClass является DEFAULT.class, и factoryMethod не"", тогда factoryMethod является именем статического метода фабрики в этом классе.
Если factoryClass не является DEFAULT.class, то factoryMethod не должен быть "" и должен быть именем статического метода фабрики, определенного в factoryClass.
public abstract String factoryMethod
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.