javax.xml.bind.annotation.adapters
Класс XmlAdapter <ValueType, BoundType>

java.lang.Object
  расширенный javax.xml.bind.annotation.adapters.XmlAdapter<ValueType,BoundType>
Введите Параметры:
BoundType - Тип, который не знает JAXB, как обработать. Адаптер пишется, чтобы позволить этому типу использоваться в качестве представления в оперативной памяти через ValueType.
ValueType - Тип, который знает JAXB, как обработать из поля.
Прямые Известные Подклассы:
CollapsedStringAdapter, HexBinaryAdapter, NormalizedStringAdapter

public abstract class XmlAdapter<ValueType,BoundType>
расширяет java.lang. Объект

Адаптирует тип Java к пользовательскому маршалингу.

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

Некоторые типы Java не отображаются естественно на представление XML, например HashMap или другой не классы JavaBean. Наоборот, XML repsentation может отобразиться на тип Java, но приложение может выбрать к accesss представление XML, используя другой тип Java. Например, схема к правилам привязки Java связывают xs:DateTime по умолчанию с XmlGregorianCalendar. Но приложение может требовать связать xs:DateTime с пользовательским типом, MyXmlGregorianCalendar, например. В обоих случаях есть несоответствие между связанным типом, используемым приложением, чтобы получить доступ к контенту XML и типу значения, который отображается на представление XML.

Этот абстрактный class определяет методы для того, чтобы адаптировать связанный тип к типу значения или наоборот. Методы вызываются JAXB обязательная платформа во время маршалинга и немаршалинга:

Запись адаптера поэтому включает следующие шаги:

Пример: Специализированное отображение HashMap

Следующий пример иллюстрирует использование @XmlAdapter и @XmlJavaTypeAdapter, чтобы настроить отображение HashMap.

Шаг 1: Определите требуемое представление XML для HashMap.

     <hashmap>
         <entry key="id123">this is a value</entry>
         <entry key="id312">this is another value</entry>
         ...
       </hashmap>  
 

Шаг 2: Определите определение схемы, за которым выше должно следовать требуемое представление XML, показанное.

     
     <xs:complexType name="myHashMapType">
       <xs:sequence>
         <xs:element name="entry" type="myHashMapEntryType"
                        minOccurs = "0" maxOccurs="unbounded"/>
       </xs:sequence>
     </xs:complexType>

     <xs:complexType name="myHashMapEntryType">
       <xs:simpleContent>
         <xs:extension base="xs:string">
           <xs:attribute name="key" type="xs:int"/>
         </xs:extension>
       </xs:simpleContent>
     </xs:complexType>

 

Шаг 3: Запишите типы значения, которые могут генерировать вышеупомянутое определение схемы.

     public class MyHashMapType {
         List<MyHashMapEntryType> entry;
     }

     public class MyHashMapEntryType {
         @XmlAttribute
         public Integer key; 

         @XmlValue
         public String value;
     }
 

Шаг 4: Запишите адаптер, который адаптирует тип значения, MyHashMapType к связанному типу, HashMap, используемый приложением.

     public final class MyHashMapAdapter extends
                        XmlAdapter<MyHashMapType,HashMap> { ... }
      
 

Шаг 5: Используйте адаптер.

     public class Foo {
         @XmlJavaTypeAdapter(MyHashMapAdapter.class)
         HashMap hashmap;
         ...
     }
 
Вышеупомянутый фрагмент кода отобразится на следующую схему:
     <xs:complexType name="Foo">
       <xs:sequence>
         <xs:element name="hashmap" type="myHashMapType"
       </xs:sequence>
     </xs:complexType>
 

С тех пор:
JAXB 2.0
Автор:
См. Также:
XmlJavaTypeAdapter

Сводка конструктора
protected XmlAdapter()
          Пустой конструктор для производных классов.
 
Сводка метода
abstract  ValueType marshal(BoundType v)
          Преобразуйте связанный тип в тип значения.
abstract  BoundType unmarshal(ValueType v)
          Преобразуйте тип значения в связанный тип.
 
Методы, наследованные от class java.lang. Объект
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Деталь конструктора

XmlAdapter

protected XmlAdapter()
Пустой конструктор для производных классов.

Деталь метода

неупорядочить

public abstract BoundType unmarshal(ValueType v)
                             throws java.lang.Exception
Преобразуйте тип значения в связанный тип.

Параметры:
v - Значение, которое будет преобразовано. Может быть нуль.
Броски:
java.lang.Exception - если есть ошибка во время преобразования. Вызывающая сторона ответственна за создание отчетов об ошибке пользователю через ValidationEventHandler.

упорядочить

public abstract ValueType marshal(BoundType v)
                           throws java.lang.Exception
Преобразуйте связанный тип в тип значения.

Параметры:
v - Значение, чтобы быть convereted. Может быть нуль.
Броски:
java.lang.Exception - если есть ошибка во время преобразования. Вызывающая сторона ответственна за создание отчетов об ошибке пользователю через ValidationEventHandler.


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

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

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


Spec-Zone.ru - all specs in one place



free hit counter