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


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


@Retention(value=RUNTIME)
@Target(value={FIELD,METHOD})
public @interface XmlAnyElement

Отображает свойство JavaBean на представление инфонабора XML и/или элемент JAXB.

Эта аннотация служит "всеобъемлющим" свойством, неупорядочивая xml контент в экземпляр JAXB аннотируемый class. Это обычно аннотирует многозначное свойство JavaBean, но это может произойти на единственном свойстве JavaBean значения. Во время немаршалинга каждый xml элемент, который не соответствует статический @XmlElement или @XmlElementRef аннотацию для других свойств JavaBean на class, добавляется к этому "всеобъемлющему" свойству.

Использования:

 @XmlAnyElement
 public Element[] others;
 
 // Collection of Element or JAXB elements.
 @XmlAnyElement(lax="true")
 public Object[] others;

 @XmlAnyElement
 private List<Element> nodes;

 @XmlAnyElement
 private Element node;
 

Ограничения использования ограничения

Эта аннотация является взаимоисключающей с XmlElement, XmlAttribute, XmlValue, XmlElements, XmlID, и XmlIDREF.

Может быть только один XmlAnyElement аннотируемое свойство JavaBean в class и его классах высшего качества.

Отношение к другим аннотациям

Эта аннотация может использоваться с XmlJavaTypeAdapter, так, чтобы пользователи могли отобразить свою собственную структуру данных на ДОМА, который поочередно может быть составлен в XML.

Эта аннотация может использоваться с XmlMixed как это:

 // List of java.lang.String or DOM nodes.
 @XmlAnyElement @XmlMixed
 List<Object> others;
 

Схема К примеру Java

Следующая схема произвела бы следующий Java class:

 <xs:complexType name="foo">
   <xs:sequence>
     <xs:element name="a" type="xs:int" />
     <xs:element name="b" type="xs:int" />
     <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
   </xs:sequence>
 </xs:complexType>
 
 class Foo {
   int a;
   int b;
   @XmlAnyElement
   List<Element> any;
 }
 
Это может неупорядочить экземпляры как

 <foo xmlns:e="extra">
   <a>1</a>
   <e:other />  // this will be bound to DOM, because unmarshalling is orderless
   <b>3</b>
   <e:other />
   <c>5</c>     // this will be bound to DOM, because the annotation doesn't remember namespaces.
 </foo>
 
Следующая схема произвела бы следующий Java class:

 <xs:complexType name="bar">
   <xs:complexContent>
   <xs:extension base="foo">
     <xs:sequence>
       <xs:element name="c" type="xs:int" />
       <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
     </xs:sequence>
   </xs:extension>
 </xs:complexType>
 

 class Bar extends Foo {
   int c;
   // Foo.getAny() also represents wildcard content for type definition bar.
 }
 
Это может неупорядочить экземпляры как

 <bar xmlns:e="extra">
   <a>1</a>
   <e:other />  // this will be bound to DOM, because unmarshalling is orderless
   <b>3</b>
   <e:other />
   <c>5</c>     // this now goes to Bar.c
   <e:other />  // this will go to Foo.any
 </bar>
 

Используя XmlAnyElement с XmlElementRef

XmlAnyElement аннотация может использоваться с XmlElementRefs, чтобы определять дополнительные элементы, которые могут участвовать в дереве контента.

Следующая схема произвела бы следующий Java class:


 <xs:complexType name="foo">
   <xs:choice maxOccurs="unbounded" minOccurs="0">
     <xs:element name="a" type="xs:int" />
     <xs:element name="b" type="xs:int" />
     <xs:any namespace="##other" processContents="lax" />
   </xs:choice>
 </xs:complexType>
 
 class Foo {
   @XmlAnyElement(lax="true")
   @XmlElementRefs({
     @XmlElementRef(name="a", type="JAXBElement.class")
     @XmlElementRef(name="b", type="JAXBElement.class")
   })
   List<Object> others;
 }

 @XmlRegistry
 class ObjectFactory {
   ...
   @XmlElementDecl(name = "a", namespace = "", scope = Foo.class)
   JAXBElement<Integer> createFooA( Integer i ) { ... }

   @XmlElementDecl(name = "b", namespace = "", scope = Foo.class)
   JAXBElement<Integer> createFooB( Integer i ) { ... }
 
Это может неупорядочить экземпляры как

 <foo xmlns:e="extra">
   <a>1</a>     // this will unmarshal to a <CODE>JAXBElement</CODE> instance whose value is 1.
   <e:other />  // this will unmarshal to a DOM <CODE>Element</CODE>.
   <b>3</b>     // this will unmarshal to a <CODE>JAXBElement</CODE> instance whose value is 1.
 </foo>
 

XML-схема W3C "слабая" подстановочная эмуляция

Слабый элемент аннотации включает эмуляции "слабой" подстановочной семантики. Например, когда исходный код Java аннотируется как это:
 @XmlRootElement
 class Foo {
   @XmlAnyElement(lax=true)
   public Object[] others;
 }
 
тогда следующий документ неупорядочит как это:

 <foo>
   <unknown />
   <foo />
 </foo>

 Foo foo = unmarshal();
 // 1 for 'unknown', another for 'foo'
 assert foo.others.length==2;
 // 'unknown' unmarshals to a DOM element
 assert foo.others[0] instanceof Element;
 // because of lax=true, the 'foo' element eagerly
 // unmarshals to a Foo object.
 assert foo.others[1] instanceof Foo;
 

С тех пор:
JAXB2.0
Автор:
Kohsuke Кавагути

Дополнительная Сводка Элемента
 boolean слабый
          Управляет unmarshaller поведением, когда оно видит элементы, известные току JAXBContext.
 java.lang.Class<? extends DomHandler> значение
          Определяет DomHandler который ответственен за фактический преобразовывание XML из структуры данных подобной DOM.
 

слабый

public abstract boolean lax
Управляет unmarshaller поведением, когда оно видит элементы, известные току JAXBContext.

Когда ложь

Если ложь, все элементы, которые соответствуют свойство, будет неупорядочена ДОМУ, и свойство будет только содержать элементы ДОМА.

Когда истина

Если это правда, когда элемент соответствует свойство, отмеченное с XmlAnyElement известен JAXBContext (например, есть class с XmlRootElement у этого есть то же самое имя тега, или есть XmlElementDecl у этого есть то же самое имя тега), unmarshaller нетерпеливо неупорядочит этот элемент к объекту JAXB, вместо того, чтобы неупорядочить его ДОМУ. Дополнительно, если элемент неизвестен, но у него есть известный xsi:type, unmarshaller нетерпеливо неупорядочивает элемент к a JAXBElement, с неизвестным именем элемента и JAXBElement значение устанавливается в экземпляр отображения JAXB известного xsi:type.

В результате после немаршалинга, свойство может стать неоднородным; у этого могут быть и узлы ДОМА и некоторые объекты JAXB одновременно.

Это может использоваться, чтобы эмулировать "слабую" подстановочную семантику XML-схемы W3C.

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

значение

public abstract java.lang.Class<? extends DomHandler> value
Определяет DomHandler который ответственен за фактический преобразовывание XML из структуры данных подобной DOM.

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


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

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

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

free hit counter