Привязка XML-данных
Эта статья в значительной степени или полностью опирается на один источник . ( июнь 2015 г. ) |
Привязка данных XML — это средство представления информации в документе XML в виде бизнес-объекта в памяти компьютера. Это позволяет приложениям получать доступ к данным XML из объекта, а не использовать DOM или SAX для получения данных из прямого представления самого XML.
Это позволяет читать и записывать данные XML с использованием библиотеки классов языка программирования (например, C++ , C# , Java ), специально созданной для данного формата данных XML. [1] Хотя для этого можно вручную написать компьютерную программу, инструменты привязки данных XML генерируют исходный код для выполнения этих задач.
Описание
[ редактировать ]Средство связывания данных XML выполняет это, автоматически создавая сопоставление между элементами схемы XML документа, который мы хотим связать, и членами класса , которые должны быть представлены в памяти.
Когда этот процесс применяется для преобразования XML-документа в объект, он называется демаршалингом (также называемым десериализацией). Обратный процесс сериализации объекта в формате XML называется маршалингом .
Подходы к привязке данных можно выделить следующие:
- На основе схемы XML: на основе существующей схемы XML создаются классы, соответствующие этой схеме.
- На основе классов: на основе набора классов, подлежащих сериализации, генерируется соответствующая схема XML.
- На основе сопоставления: описание сопоставления, обычно само по себе являющееся документом XML, описывает, как существующая схема XML сопоставляется с набором классов и наоборот.
Трудности
[ редактировать ]Поскольку XML является документо-ориентированным форматом, а объекты (обычно) не ориентированы на документы, простые сопоставления привязки данных XML могут игнорировать некоторую структурную информацию, встроенную в XML-документ. В частности, такая информация, как комментарии , ссылки на сущности XML и порядок родственных элементов, может не сохраняться в представлении объекта, созданном приложением привязки. Однако это не всегда так; достаточно мощные инструменты привязки XML-данных способны сохранить 100% информации, хранящейся в XML-документе.
Аналогичным образом, поскольку объекты, находящиеся в памяти компьютера, по своей сути не хранятся последовательно и могут включать ссылки на другие объекты (включая ссылки на себя), простые сопоставления привязки данных XML могут быть не способны сохранить всю информацию об объекте при его маршалировании. в XML. Однако достаточно мощные инструменты привязки данных выполняют анализ структуры графа объектов, находящихся в памяти, для сортировки (циклических) структур графа объектов в XML, используя стандартные ссылочные атрибуты XML.
Альтернативы
[ редактировать ]Альтернативный подход к автоматической привязке данных вместо этого основан на созданных вручную выражениях XPath , которые извлекают данные из XML. Этот подход имеет некоторые преимущества, но также имеет и некоторые недостатки. Во-первых, этот подход требует лишь приблизительных знаний (например, топологии, имен тегов и т. д.) древовидной структуры XML, которую разработчики могут определить, просматривая данные XML. Более того, XPath позволяет приложению связывать соответствующие элементы данных и фильтровать все остальное, избегая ненужной обработки, которая потребовалась бы для полной демаршализации всего XML-документа. Недостатком этого подхода является отсутствие автоматизации реализации объектной модели и выражений XPath. Вместо этого разработчикам приложений приходится создавать эти артефакты вручную, что отнимает много времени, потенциально подвержено ошибкам и затрудняет обслуживание приложений при обновлении схем XML и моделей содержимого XML. Еще одним недостатком является отсутствие проверки схемы XML, которая привязка данных XML обычно применяется автоматически во время демаршаллинга. Валидность схемы обычно требуется в безопасных приложениях.
Привязка данных в целом
[ редактировать ]Одной из сильных сторон привязки данных XML является возможность десериализации объектов между программами, языками и платформами. [2] Вы можете сбросить временные ряды структурированных объектов из регистратора данных, написанного на C (язык программирования) , на встроенный процессор, передать их по сети для обработки в Perl и, наконец, визуализировать в Octave . Структура и данные остаются согласованными и последовательными на протяжении всего пути, и не требуется никаких специальных форматов или синтаксического анализа. Это не уникально для XML. YAML , например, становится мощной альтернативой XML для привязки данных. JSON (который можно рассматривать как подмножество YAML) часто подходит для облегченных или ограниченных приложений.
Платформы привязки XML-данных
[ редактировать ]Имя | Язык программирования | Лицензия | Первый выпуск | Последняя стабильная версия | Генерация кода из XSD | Пользовательское сопоставление | Примечание |
---|---|---|---|---|---|---|---|
Apache Commons между | Ява | Апач | 28 января 2003 г. | 0.8 | Unknown | Unknown | Спящий. Сериализует объекты в XML, не требуя определения схемы XML. |
XMLBeans Apache | Ява | Лицензия Апач 2.0 | 5.1.1, 29 августа 2022 г. | Да | Unknown | ||
Кастор | Ява | Апач 2.0 | 1.4.1, 15 мая 2016 г. | Unknown | Unknown | Более ранние версии также поддерживали сохранение Java-SQL, но с тех пор это было выделено в отдельный проект. | |
Синтез кода XSD | С++ | GNU GPL и проприетарная | 4.0.0, 22 июля 2014 г. | Unknown | Unknown | с SAX или древовидным отображением в классы C++ | |
gSOAP | С и С++ | GNU GPL и проприетарная | 8 декабря 2000 г | 2.8.131, 23 сентября 2023 г. | Да | Да | Поддерживает схему XML, WSDL и SOAP; Схемы XML не требуются для сериализации данных C/C++ в XML; пользовательское сопоставление типов схем XML с типами C/C++ с помощью файла сопоставления типов и типов C/C++ с совместимыми типами схем XML с помощью аннотации исходного кода. |
Архитектура Java для привязки XML (JAXB) | Ява | ? | Да | Да | |||
ДжиБХ | Ява | Лицензия БСД | 1.2.6, 1 января 2015 г. | Да | Да | Сопоставляет классы со схемами XML посредством манипуляций с байт-кодом. | |
Жидкий связыватель XML-данных | C++, C#, Java, Visual Basic.Net, Visual Basic 6 (COM) | Бесплатное ПО и собственность | 1 июня 2001 г | 18 июня 2024 г | Да | Да | Поддерживает схему XML (XSD), DTD, XDR, WSDL. Сериализует XML в JSON и JSON в XML. |
Жидкие XML-объекты | C# и Visual Basic .Net (поддерживает XSD 1.1) | Бесплатное ПО и собственность | 3 марта 2019 г | 18 июня 2024 г | Да | Да | Прямая замена XSD.exe. Интегрирован в Microsoft Visual Studio . Поддерживает схему XML (XSD 1.0 и XSD 1.1), DTD, WSDL. Сериализует XML в JSON и JSON в XML. |
Простой | Ява | Апач 2.0 | 2.7.1, 9 февраля 2017 г. | Нет | Да | ||
System.Xml.Сериализация | С# | ? | Да | Нет | Часть платформы .NET, содержит классы привязки данных XML; включает в себя xsd.exe инструмент для создания классов из схемы XSD
| ||
xmlbeansxx | С++ | Апач 2.0 | 0.9.1, 1 апреля 2008 г. | Unknown | Unknown | C++-порт Apache XMLBeans | |
XStream | Ява | BSD Лицензия в стиле | 1 января 2004 г | 1.4.10, 23 мая 2017 г. | Unknown | Unknown | Также возможна сериализация в JSON. |
Зевс | Ява | ? | 3.5 бета, 16 августа 2002 г. | Unknown | Unknown |
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Что такое привязка XML-данных — Учебное пособие» Liquid Technologies. Проверено 24 июля 2024 г.
- ^ «Что такое привязка XML» IBM. Проверено 16 апреля 2024 г.