Привязка данных XML ссылается к средству представления информации в документе XML как бизнес-объект в памяти компьютера. Это позволяет приложениям получать доступ к данным в XML из объекта вместо использования DOM или SAX для извлечения данных из прямого представления самого XML..
Связывание данных XML выполняет это, автоматически создавая сопоставление между элементами схемы XML документа, который мы хотим связать, и членами из класса для представления в памяти.
Когда этот процесс применяется для преобразования XML-документа в объект, он называется демаршалингом. Обратный процесс сериализации объекта как XML называется маршаллинг.
Подходы к привязке данных можно различить следующим образом:
Поскольку XML по своей природе является последовательным, а объекты (обычно) нет, сопоставления привязки данных XML часто испытывают трудности с сохранением вся информация в XML-документе. В частности, такая информация, как комментарии, ссылки на объекты XML и порядок братьев и сестер, могут не сохраняться в представлении объекта, созданном приложением привязки. Это не всегда так; достаточно сложные связыватели данных способны сохранять 100% информации в документе XML.
Точно так же, поскольку объекты в памяти компьютера не являются по своей сути последовательными и могут включать ссылки на другие объекты (включая самореференционные ссылки), сопоставлениям привязки данных XML часто возникают трудности с сохранением всей информации об объекте, когда он упорядочено в XML.
Альтернативный подход к автоматической привязке данных основан на использовании вручную созданных выражений XPath, извлекающих данные из XML. У этого подхода есть ряд преимуществ. Во-первых, код связывания данных требует только приблизительных знаний (например, топологии, имен тегов и т. Д.) Древовидной структуры XML, которую разработчики могут определить, просмотрев данные XML; XML-схемы больше не являются обязательными. Более того, XPath позволяет приложению связывать соответствующие элементы данных и отфильтровывать все остальное, избегая ненужной обработки, которая потребовалась бы для полного демаршалинга всего XML-документа. Недостатком этого подхода является отсутствие автоматизации при реализации объектной модели и выражений XPath. Вместо этого разработчики приложений должны создавать эти артефакты вручную.
Одной из сильных сторон привязки данных XML является способность де / сериализовать объекты в разных программах, языках и платформах. Вы можете выгрузить временные ряды структурированных объектов из регистратора данных, написанного на C (язык программирования), на встроенный процессор, передать его по сети для обработки в Perl и, наконец, визуализировать в Октава. Структура и данные остаются согласованными и согласованными на протяжении всего пути, и никаких специальных форматов или синтаксического анализа не требуется. Это не уникально для XML. YAML, например, становится мощной альтернативой привязке данных к XML. JSON (который можно рассматривать как подмножество YAML) часто подходит для легких или ограниченных приложений.
Имя | Язык программирования | Лицензия | Первый выпуск | Последний стабильный выпуск | Генерация кода из XSD | Пользовательское сопоставление | Примечание |
---|---|---|---|---|---|---|---|
Apache Commons Betwixt | Java | Apache | 28 января 2003 г. (2003 г. -01-28) | 0,8 | Неизвестно | Неизвестно | Неактивно. Сериализует объекты в XML без необходимости определения схемы XML |
Apache XMLBeans | Java | Лицензия Apache 2.0 | 3.1.0, 26 марта 2019 г. (26 марта 2019 г.) | Да | Неизвестно | ||
Castor | Java | Apache 2.0 | 1.4.1, 15 мая 2016 г. (2016-05-15) | Неизвестно | Неизвестно | Более ранние версии также поддерживали постоянство Java-to-SQL, но с тех пор это было выделено в отдельный проект | |
CodeSynthesis XSD | C ++ | GNU GPL и проприетарный | 4.0.0, 22 июля 2014 г. (2014-07-22) | Неизвестно | Неизвестно | с SAX или древовидным отображением в классы C ++ | |
gSOAP | C и C ++ | GNU GPL и проприетарный | 8 декабря 2000 г.; 19 лет назад (2008-12-2000) | 2.8.94, 17 октября 2019 г. (2019-10-17) | Да | Да | Поддерживает схему XML, WSDL и SOAP; XML-схемы не требуются для сериализации данных C / C ++ в XML; настраиваемое сопоставление типов схемы XML с типами C / C ++ через файл сопоставления типов и с типов C / C ++ на совместимые типы схемы XML с помощью аннотации исходного кода |
Архитектура Java для привязки XML (JAXB) | Java | ? | Да | Да | |||
JiBX | Java | Лицензия BSD | 1.2.6, 1 января 2015 г. (2015-01-01) | Да | Да | Сопоставляет классы с XML-схемами через манипуляции с байт-кодом | |
Simple | Java | Apache 2.0 | 2.7.1, 9 февраля 2017 г. (2017-02 -09) | Нет | Да | ||
System.Xml.Serialization | C # | ? | Да | Нет | Часть платформы.NET содержит классы привязки данных XML; включает инструмент xsd.exe для создания классов из схемы XSD | ||
xmlbeansxx | C ++ | Apache 2.0 | 0.9.1, 1 апреля 2008 г. (2008-04-01) | Неизвестно | Неизвестно | Порт C ++ Apache XMLBeans | |
XStream | Java | Лицензия в стиле BSD | 1 января, 2004; 16 лет назад (01.01.2004) | 1.4.10, 23 мая 2017 г. (2017-05-23) | Неизвестно | Неизвестно | Также возможна сериализация в JSON |
Zeus | Java | ? | 3.5 beta, 16 августа 2002 г. (2002-08-16) | Неизвестно | Неизвестно |