Skip to content

Starting using exjaxb

AlexOreshkevich edited this page Nov 19, 2012 · 8 revisions

Getting started exjaxb

Описание библиотеки

Совместное применение шаблонов Builder и Decorator позволило решить проблему с пространствами имен XSD. Теперь сериализация и десериализация для любых парсеров происходит практически в одну строчку.

Пример использования

// создаем парсер
ExJAXBParser<Adhocroot> parser = new SchemaTestParser();
ExJAXB<Adhocroot> service = new ExJAXB<Adhocroot>(parser);

// десериализация
Adhocroot result = service.unmarshall(srcXml, srcXsd, target, isValidationEnabled, isSavingTempEnabled);

// сериализация
Marshaller marshaller = service.getMarshallBuilder().createMarshaller(result.getClass());
service.marshall(marshaller, result, parser.getRootTagName(), parser.getSchemaInstancePrefix(), doc);

Требования

Парсер должен реализовывать интерфейс ExJAXBParser.

Зависимости

JAXB-RI 2.2.4.1 Лицензия библиотеки: CDDL v1.1 и GPL v2.

Назначение

Библиотека представляет собой автоматический сериализатор/десериализатор, который планируется использовать при обработке различных xml-документов, которые в будущем могут появится.

Наличие в ней средств, позволяющих на основании XSD-спецификации выполнять автоматическую сериализацию/десериализацию, радикально уменьшает затраты времени на разработку XML-анализаторов.

Технические преимущества, которые даст использование данной библиотеки:

  1.  Возможность использования дополнительных свойств сериализатора, описанных здесь http://jaxb.java.net/nonav/2.2.4-1/docs/vendorProperties.html . Такие свойства позовлят программно управлять процессом автоматической сериализации, связывая xml-документы с пространствами имен, объявленных в XSD. В целом, при наличии нескольких версий спецификаций (напр., 0.83 и 0.84) возникнет проблема анализа xml. При использовании данной библиотеки наличие разных версий можно будет разделять с помощью пространства имен. Существующая реализация в Java6 http://download.oracle.com/javase/6/docs/api/javax/xml/bind/Marshaller.html#supportedProps не поддерживает этого.
    
  2.  На основе этой библиотеки я развил функционал, позволяющий выполнять обобщенную сериализацию/десериализацию “в одну строчку” (использовал Generics, GoF patterns Decorator, Builder). Получение java-модели из xml теперь сведется к указанию местоположения схемы и заданию параметров маршализации (если это необходимо).
    
  3.  Программный контроль над аннотациями с помощью открытия доступа к  XmlAccessorFactory. Это позовлит программно управлять автоматической моделью при сериализации/десериализации.
    
  4.  Программный доступ на уровне XSD: новые возможности управления сериализацией. http://jaxb.java.net/nonav/2.2.4-1/docs/vendorCustomizations.html В целом, позволяет более гибко формировать модель по спецификации XSD.
    

Полный перечень известных достоинств библиотеки размещен по адресу http://jaxb.java.net/nonav/2.2.4-1/docs/vendor.html