Связывание данных XML - XML data binding

Связывание данных XML относится к средствам представления информации в XML документ как бизнес-объект в памяти компьютера. Это позволяет Приложения для доступа к данным в XML от объекта вместо использования ДОМ или же SAX для извлечения данных из прямого представления самого XML.

Описание

Связыватель данных XML выполняет это, автоматически создавая сопоставление между элементами Схема XML документа, который мы хотим связать, и члены из учебный класс быть представленным в памяти.

Когда этот процесс применяется для преобразования XML-документа в объект, он называется демаршаллинг. Обратный процесс сериализации объекта как XML называется сортировка.

Подходы к привязке данных можно разделить на следующие:

  • Схема XML на основе: На основе существующей схемы XML создаются классы, соответствующие схеме.
  • На основе класса: На основе набора классов, подлежащих сериализации, создается соответствующая XML-схема.
  • На основе картографии: Описание сопоставления, которое обычно представляет собой XML-документ, описывает, как существующая XML-схема сопоставляется с набором классов и наоборот.

Трудности

Поскольку XML по своей природе является последовательным, а объекты (обычно) нет, сопоставлениям привязки данных XML часто возникают трудности с сохранением всей информации в документе XML. В частности, такая информация, как Комментарии, Ссылки на объекты XML и порядок братьев и сестер могут не сохраняться в представлении объекта, созданном приложением привязки. Это не всегда так; достаточно сложные связыватели данных способны сохранять 100% информации в XML-документе.

Точно так же, поскольку объекты в памяти компьютера не являются по своей природе последовательными и могут включать ссылки на другие объекты (включая самореференционные ссылки), сопоставлениям привязки данных XML часто возникают трудности с сохранением всей информации об объекте, когда он упорядочивается в XML.

Альтернативы

Альтернативный подход к автоматической привязке данных основан на ручной работе. XPath выражения, извлекающие данные из XML. У этого подхода есть ряд преимуществ. Во-первых, коду привязки данных требуется только приблизительное знание (например, топология, имена тегов и т. Д.) Древовидной структуры XML, которую разработчики могут определить, просмотрев данные XML; XML-схемы больше не являются обязательными. Более того, XPath позволяет приложению связывать соответствующие элементы данных и отфильтровывать все остальное, избегая ненужной обработки, которая потребовалась бы для полного демаршалинга всего XML-документа. Недостатком этого подхода является отсутствие автоматизации при реализации объектной модели и выражений XPath. Вместо этого разработчики приложений должны создавать эти артефакты вручную.

Привязка данных в целом

Одна из сильных сторон привязки данных XML - это возможность un / serialize объекты в программах, языках и платформах. Вы можете выгрузить временные ряды структурированных объектов из регистратора данных, написанного на C (язык программирования) на встроенном процессоре, передать его по сети для обработки в Perl и, наконец, визуализируйте в Октава. Структура и данные остаются согласованными и согласованными на протяжении всего пути, и никаких специальных форматов или анализа не требуется. Это не уникально для XML. YAML, например, становится мощной альтернативой привязке данных к XML. JSON (который можно рассматривать как подмножество YAML) часто подходит для легких или ограниченных приложений.

Структуры привязки данных XML

ИмяЯзык программированияЛицензияПервый выпускПоследний стабильный выпускГенерация кода из XSDПользовательское сопоставлениеПримечание
Apache Commons МеждуЯваApache28 января 2003 г. (2003-01-28)0.8НеизвестноНеизвестноБездействующий. Сериализует объекты в XML, не требуя определения схемы XML.
Apache XMLBeansЯваЛицензия Apache 2.03.1.0, 26 марта 2019 г. (2019-03-26)даНеизвестно
КасторЯваApache 2.01.4.1, 15 мая 2016 г. (2016-05-15)НеизвестноНеизвестноБолее ранние версии также поддерживали постоянство Java-to-SQL, но с тех пор это было выделено в отдельный проект.
CodeSynthesis XSDC ++GNU GPL и проприетарный4.0.0, 22 июля 2014 г. (2014-07-22)НеизвестноНеизвестнос SAX или древовидным отображением в классы C ++
gSOAPC и C ++GNU GPL и проприетарный8 декабря 2000 г.; 19 лет назад (2000-12-08)2.8.94, 17 октября 2019 г. (2019-10-17)дадаПоддерживает схему XML, WSDL и SOAP; XML-схемы не требуются для сериализации данных C / C ++ в XML; настраиваемое сопоставление типов схемы XML с типами C / C ++ через файл сопоставления типов и с типов C / C ++ на совместимые типы схем XML с помощью аннотации исходного кода
Архитектура Java для привязки XML (JAXB)Ява?дада
JiBXЯваЛицензия BSD1.2.6, 1 января 2015 г. (2015-01-01)дадаСопоставляет классы с XML-схемами с помощью манипуляции с байт-кодом
ПростойЯваApache 2.02.7.1, 9 февраля 2017 г. (2017-02-09)Нетда
System.Xml.SerializationC #?даНетЧасть платформы .NET, содержит классы привязки данных XML; включает xsd.exe инструмент для создания классов из схемы XSD
xmlbeansxxC ++Apache 2.00.9.1, 1 апреля 2008 г. (2008-04-01)НеизвестноНеизвестноПорт C ++ для Apache XMLBeans
XStreamЯваBSD -стильная лицензия1 января 2004 г.; 16 лет назад (2004-01-01)1.4.10, 23 мая 2017 г. (2017-05-23)НеизвестноНеизвестноТакже возможна сериализация в JSON
ЗевсЯва?3.5 beta, 16 августа 2002 г. (2002-08-16)НеизвестноНеизвестно

Смотрите также

Рекомендации

внешняя ссылка