ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ JAXB JAXB ПРИ РАЗРАБОТКЕ ПРИ РАЗРАБОТКЕ XML XML ПРИЛОЖЕНИЙ ПРИЛОЖЕНИЙ CERN – European Organization for Nuclear Research IT Department – e-Business Section Afonin Alexey, Derek Mathieson Afonin Alexey, Derek Mathieson e-Business section, e-Business section, IT department IT department CERN – Geneva, Switzerland CERN – Geneva, Switzerland
42
Embed
ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ JAXB ПРИ РАЗРАБОТКЕ XML ПРИЛОЖЕНИЙ
CERN – European Organization for Nuclear Research. ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ JAXB ПРИ РАЗРАБОТКЕ XML ПРИЛОЖЕНИЙ. IT Department – e -Business Section. Afonin Alexey, Derek Mathieson e-Business section, IT department CERN – Geneva, Switzerland. JAXB. JAXB: - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ JAXBJAXBПРИ РАЗРАБОТКЕ ПРИ РАЗРАБОТКЕ XMLXML ПРИЛОЖЕНИЙ ПРИЛОЖЕНИЙ
ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ JAXBJAXBПРИ РАЗРАБОТКЕ ПРИ РАЗРАБОТКЕ XMLXML ПРИЛОЖЕНИЙ ПРИЛОЖЕНИЙ
CERN – European Organization for Nuclear Research
IT Department – e-Business Section
Afonin Alexey, Derek MathiesonAfonin Alexey, Derek Mathiesone-Business section,e-Business section, IT departmentIT department
JAXB:JAXB: The Java Architecture for XML BindingThe Java Architecture for XML Binding Спецификация принята 8 Января 2003 годаСпецификация принята 8 Января 2003 года
OrdersListType orders OrdersListType orders = (OrdersListType)= (OrdersListType)unmarshaller.unmarshalunmarshaller.unmarshal(( new File("new File("simple-order.xmlsimple-order.xml"));"));
List ordersList = orders.getOrder();List ordersList = orders.getOrder();for (int i = 0; i < ordersList.size(); i++) {for (int i = 0; i < ordersList.size(); i++) {
OrderTypeOrderType order = (OrderType)ordersList.get(i); order = (OrderType)ordersList.get(i);System.out.println("Number = " + System.out.println("Number = " + order.getNumber()order.getNumber()
Пример: работа с Пример: работа с JAXBJAXBПример: работа с Пример: работа с JAXBJAXB
......ObjectFactory ObjectFactory objectFactoryobjectFactory = new ObjectFactory(); = new ObjectFactory();
Order Order newOrdernewOrder = = objectFactory.createOrder();objectFactory.createOrder();newOrder.setNumber(2006);newOrder.setNumber(2006);newOrder.setDate(Calendar.getInstance());newOrder.setDate(Calendar.getInstance());newOrder.setDescription("New Order");newOrder.setDescription("New Order");newOrder.setAmount(100);newOrder.setAmount(100);
JAXB предоставляет три варианта проверки XML документа:JAXB предоставляет три варианта проверки XML документа: во время демаршаллинга (unmarshall-time validation)во время демаршаллинга (unmarshall-time validation) по требованию (on-demand validation)по требованию (on-demand validation) "на лету" (fail-fast validation)"на лету" (fail-fast validation)
public interface public interface ValidatorValidator { { ValidationEventHandler getEventHandler()ValidationEventHandler getEventHandler() void setEventHandler(ValidationEventHandlervoid setEventHandler(ValidationEventHandler handlerhandler))
Unmarshaller Unmarshaller читает XML документ, выполняет его проверку и строит читает XML документ, выполняет его проверку и строит объектную модельобъектную модель
МаршаллингМаршаллингМаршаллингМаршаллинг
MMarshaller arshaller сохраняет объектную модель в сохраняет объектную модель в XML документXML документ
public interface public interface MarshallerMarshaller { {
Производный атомарный тип данных с ограничением типа Производный атомарный тип данных с ограничением типа «перечисление»«перечисление» Перечисление (Перечисление (Type Safe Enumeration)Type Safe Enumeration)
public class public class CountryTypeCountryType { {
private final String value;private final String value;
protected CountryType(String v) { value = v; }protected CountryType(String v) { value = v; }
public final static CountryType public final static CountryType FRANCEFRANCE
= new CountryType(= new CountryType(""FRANCEFRANCE""););
public final static CountryType public final static CountryType SWITZERLANDSWITZERLAND
= new generated.CountryType(= new generated.CountryType(""SWITZERLANDSWITZERLAND""););
......
}}
Связывание встроенных типов данныхСвязывание встроенных типов данныхСвязывание встроенных типов данныхСвязывание встроенных типов данных
Таблица соответствия встроенных типовТаблица соответствия встроенных типов
(Simple Built-in Types)(Simple Built-in Types)
Тип данных Тип данных XML XML схемысхемы Тип данных Тип данных JavaJava
xsd:string java.lang.String
xsd:integer java.math.BigInteger
xsd:int int
xsd:long long
xsd:decimal java.math.BigDecimal
xsd:float float
xsd:double double
xsd:boolean boolean
xsd:byte byte
xsd:dateTime java.util.Calendar
xsd:anySimpleType java.lang.String
НаследованиеНаследованиеНаследованиеНаследование
Наследование Наследование XMLXML типов через ограничение ( типов через ограничение (restrictionrestriction) или ) или расширениерасширение (extension) (extension) Java Java наследованиенаследование
Наследование Наследование XMLXML типов через ограничение ( типов через ограничение (restrictionrestriction) или ) или расширениерасширение (extension) (extension) Java Java наследованиенаследование
Переопределение связыванияПереопределение связывания:: создание документации (создание документации (JavadocJavadoc)) изменение правил именованияизменение правил именования
разрешить конфликтов именразрешить конфликтов имен определить имена для констант перечисленийопределить имена для констант перечислений
определять свои типы данных для атрибутовопределять свои типы данных для атрибутов переопределять связывание встроенных типовпереопределять связывание встроенных типов переопределять маршаллинг переопределять маршаллинг // демаршаллинг для демаршаллинг для
пользовательских типов данныхпользовательских типов данных
Встроенное и Внешнее ПереопределениеВстроенное и Внешнее ПереопределениеВстроенное и Внешнее ПереопределениеВстроенное и Внешнее Переопределение
Встроенное переопределение – внутри Встроенное переопределение – внутри XMLXML схемы схемы
Внешнее переопределение – отдельный файлВнешнее переопределение – отдельный файл
Переопределения Типов Данных и КомпонентПереопределения Типов Данных и КомпонентПереопределения Типов Данных и КомпонентПереопределения Типов Данных и Компонент
Переопределения Типов Данных и КомпонентПереопределения Типов Данных и КомпонентПереопределения Типов Данных и КомпонентПереопределения Типов Данных и Компонент
Преобразование типов данных Преобразование типов данных Java Java XML XML
Пример Настройки СвязыванияПример Настройки СвязыванияПример Настройки СвязыванияПример Настройки Связывания
public final static DeploymentModeValue PRODUCTION
= new DeploymentModeValue(_PRODUCTION);
public final static DeploymentModeValue TEST
= new DeploymentModeValue(_TEST);
...
}
public class DeploymentModeValue {
public final static DeploymentModeValue PRODUCTION
= new DeploymentModeValue(_PRODUCTION);
public final static DeploymentModeValue TEST
= new DeploymentModeValue(_TEST);
...
}
JAXB vs. JAXPJAXB vs. JAXPJAXB vs. JAXPJAXB vs. JAXP
JAXB JAXB следует использовать когда нужно:следует использовать когда нужно: Создавать объектные представления данных XMLСоздавать объектные представления данных XML Обрабатывать только верные данные Обрабатывать только верные данные Преобразовывать данные к различным типам Преобразовывать данные к различным типам
JAXJAXPP следует использовать когда нужно: следует использовать когда нужно: Обрабатывать документы, построенные на различных DTDОбрабатывать документы, построенные на различных DTD Обрабатывать документы, которые не обязательно являются Обрабатывать документы, которые не обязательно являются
правильными правильными Применять XSLT преобразования Применять XSLT преобразования Обрабатывать лишь отдельные части Обрабатывать лишь отдельные части XML XML документадокумента
Использование Использование JAXBJAXBИспользование Использование JAXBJAXB
Система Электронного Документооборота Система Электронного Документооборота ((EDHEDH))
Приложение электронной коммерции Приложение электронной коммерции B2B:B2B: стандарт стандарт cXMLcXML ~~ 100 интерфейсов объектной модели 100 интерфейсов объектной модели ~~ 100 классов реализации 100 классов реализации
Спасибо за внимание!Спасибо за внимание!Спасибо за внимание!Спасибо за внимание!
XML XML элементэлементXML XML элементэлемент
XML XML элемент элемент Java Java интерфейс элементаинтерфейс элемента
Тип элемента объявлен составным (Тип элемента объявлен составным (Complex type definitionComplex type definition))::
Уровни Действия ПереопределенияУровни Действия ПереопределенияУровни Действия ПереопределенияУровни Действия Переопределения
Каждый следующий уровень по отношению к предыдущему:Каждый следующий уровень по отношению к предыдущему: наследует наследует переопределяетпереопределяет