Apache XMLBeans - Википедия - Apache XMLBeans
Разработчики) | Фонд программного обеспечения Apache |
---|---|
Стабильный выпуск | 3.1.0 / 26 марта 2019 г. |
Предварительный выпуск | 3.0.2 |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Тип | Привязка XML |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | xmlbeans |
XMLBeans это Ява -к-Привязка XML рамки который является частью Фонд программного обеспечения Apache XML проект.
Описание
XMLBeans - это инструмент, который позволяет получить доступ ко всей мощи XML дружественным для Java способом. Идея состоит в том, чтобы воспользоваться богатством и возможностями XML и Схема XML и чтобы эти функции были максимально естественно сопоставлены с эквивалентным языком Java и типизирующими конструкциями. XMLBeans использует схему XML для компиляции интерфейсов и классов Java, которые затем могут использоваться для доступа и изменения данных экземпляра XML. Использование XMLBeans аналогично использованию любого другого интерфейса / класса Java: с такими методами, как getFoo или setFoo, как и при работе с Java. Хотя в основном XMLBeans используется для доступа к данным экземпляра XML с помощью строго типизированных классов Java, существуют также API-интерфейсы, которые позволяют получить доступ к полному Информационный набор XML (XMLBeans сохраняет точность XML Infoset), а также позволяет отражать в самой XML-схеме через объектную модель XML-схемы.
Характеристики XMLBeans
- Большой Схема XML поддерживать.
- Большой Информационный набор XML поддерживать.
Поддержка большой XML-схемы: XMLBeans полностью поддерживает XML-схему, а соответствующие классы Java предоставляют конструкции для всех основных функций XML-схемы. Это очень важно, так как часто никто не может контролировать функции XML-схемы, необходимые для работы в Java. Кроме того, приложения, ориентированные на XML-схему, могут в полной мере использовать возможности XML-схемы и не должны ограничиваться подмножеством.
Поддержка большого информационного набора XML: при демаршалинге экземпляра XML полный информационный набор XML сохраняется и доступен для разработчика. Это очень важно, потому что это подмножество XML нелегко представить в Java. Например, в конкретном приложении может потребоваться порядок элементов или комментариев.
Цель
Основной целью XMLBeans была его применимость во всех ситуациях программирования XML без потоковой передачи (в памяти). Разработчик должен уметь скомпилировать свою XML-схему в набор классов Java и знать, что они смогут:
- использовать XMLBeans для всех схем, с которыми они сталкиваются.
- доступ к XML на любом уровне без других инструментов.
API
Для достижения вышеуказанных целей XMLBeans предоставляет три основных API:
- XmlObject
- XmlCursor
- SchemaType
XmlObject: все классы java, созданные из схемы XML, являются производными от XmlObject. Они предоставляют строго типизированные геттеры и сеттеры для каждого элемента в пределах определенного XML. Сложные типы, в свою очередь, являются XmlObjects. Например, getCustomer может вернуть CustomerType (который является XmlObject). Простые типы превращаются в простые методы получения и установки с правильным типом java. Например, getName может вернуть String.
XmlCursor: из любого XmlObject разработчик может получить XmlCursor. Это обеспечивает эффективный низкоуровневый доступ к информационному набору XML. Курсор представляет позицию в экземпляре XML. Курсор можно перемещать по экземпляру XML на любом уровне детализации, от отдельных символов до токенов.
SchemaType: XMLBeans предоставляет полную объектную модель схемы XML, которую можно использовать для отражения метаинформации базовой схемы. Например, разработчик может сгенерировать образец экземпляра XML для схемы XML или, возможно, найти перечисления для элемента, чтобы их можно было отобразить.
Пример
Ниже приведен пример простого определения схемы XML для описания страны.
<?xml version="1.0" encoding="UTF-8"?> targetNamespace ="http://www.openuri.org/domain/country/v1" xmlns: tns ="http://www.openuri.org/domain/country/v1" xmlns: xs ="http://www.w3.org/2001/XMLSchema" elementFormDefault ="квалифицированный" attributeFormDefault ="неквалифицированный" версия ="1.0"> имя ="Страна" type ="tns: Country"/> имя ="Страна"> <xs:sequence> имя ="Имя" type ="xs: строка"/> имя ="Численность населения" type ="xs: int"/> имя ="Исо" type ="tns: Iso"/> </xs:sequence> </xs:complexType> имя ="Исо"> <xs:annotation><xs:documentation>ISO 3166</xs:documentation></xs:annotation> <xs:sequence> имя =«Альфа2» type ="tns: IsoAlpha2"/> имя =«Альфа3» type ="tns: IsoAlpha3"/> имя ="Код страны" type ="tns: IsoCountryCode"/> </xs:sequence> </xs:complexType> имя ="IsoCountryCode"> база ="xs: int"> значение ="3"/> </xs:restriction> </xs:simpleType> имя =«ИзоАльфа2»> база ="xs: строка"> значение ="[А-Я] {2}"/> значение ="крах"/> </xs:restriction> </xs:simpleType> имя =«ИзоАльфа3»> база ="xs: строка"> значение ="[А-Я] {3}"/> значение ="крах"/> </xs:restriction> </xs:simpleType> </xs:schema>
Когда схема компилируется в классы XMLBean (например, используя Муравей ), очень легко создавать XML-данные, соответствующие определению схемы, и управлять ими. Следующий код Java представляет собой простой пример, демонстрирующий, как можно создать и проверить документ XML.
импорт org.openuri.domain.country.v1.Country; импорт org.openuri.domain.country.v1.Iso; общественный учебный класс CountrySample { общественный статический пустота главный(Нить[] аргументы) { Страна страна = Страна.Фабрика.newInstance(); страна.Имя набора("Дания"); страна.setPopulation(5450661); // из Википедии :-) // распечатать XMLBean страны как XML Система.из.println(страна.xmlText()); // проверяем, действителен ли документ - выведет «Документ недействителен» // потому что требуемый дочерний элемент Iso отсутствует в объекте Система.из.println («Документ есть» + (страна.подтверждать() ? "действительный" : "инвалид")); // добавляем потомок со сложным типом Iso, чтобы документ действовал Исо iso = страна.addNewIso(); iso.setAlpha2("ДК"); iso.setAlpha3(«ДНК»); iso.setCountryCode(208); // распечатать XMLBean страны как XML Система.из.println(страна.xmlText()); // проверяем, действителен ли документ - напечатает «Документ действителен» Система.из.println («Документ есть» + (страна.подтверждать() ? "действительный" : "инвалид")); } }
История
Дэвид Бау был главным дизайнером проекта XMLBeans 1.0, когда работал в BEA. XMLBeans начался на основе XMLMaps, инструмент привязки XML, включенный в предыдущий BEA WebLogic товары. XMLBeans изначально был разработан как часть проприетарного BEA WebLogic Workshop Framework, но из интервью, проведенных после первого объявления 27 января 2003 г., было очевидно, что BEA хочет, чтобы он стал открытым стандартом. В то время еще не было решено, какую организацию BEA хотела бы привлечь к работе по стандартизации. Позже в том же году он был передан в дар Apache Software Foundation. В первоначальную команду входили Цезарь Кристиан Андрей и Эрик Василик, позже в команду были добавлены Клифф Шмидт и Раду Преотюк-Пьетро, Якоб Даннер, Кевин Кроуз и Уинг Ю Пун. XMLBeans сейчас разрабатывается POI Apache.
- 27 января 2003 г .: BEA анонсирует XMLBeans как предварительную версию технологии.
- 24 сентября 2003 г .: BEA передает XMLBeans в фонд Apache Software Foundation, где присоединяется к Проект инкубатора Apache.
- 23 апреля 2004 г .: Выпущена версия 1.0.2 XMLBeans. Это первый релиз от проекта инкубатора.
- 25 июня 2004 г .: XMLBeans вышел из проекта Apache Incubator и стал проектом верхнего уровня.
- 30 июня 2005 г .: Выпущена версия 2.0 XMLBeans.
- 16 ноября 2005 г .: Выпущена версия 2.1 XMLBeans.
- 23 июня 2006 г .: Выпущена версия 2.2 XMLBeans.
- 1 июня 2007 г .: Выпущена версия 2.3 XMLBeans.
- 8 июля 2008 г .: Выпущена версия 2.4 XMLBeans.
- 14 декабря 2009 г .: Выпущена версия 2.5 XMLBeans.
- 14 августа 2012 г .: выпущена версия 2.6 XMLBeans.
- 23 мая 2014 г .: XMLBeans был официально выведен из эксплуатации, и активная разработка временно приостановлена.
- 29 июня 2018 г .: XMLBeans "не использовался", и Apache POI занялся активной разработкой.[1]
Смотрите также
- Связывание данных XML
- Архитектура Java для привязки XML (JAXB)
- xmlbeansxx — Привязка данных XML генератор кода для C ++