Связывание данных XML - XML data binding
Эта статья не цитировать любой источники.Июнь 2015 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Связывание данных 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 Между | Ява | Apache | 28 января 2003 г. | 0.8 | Неизвестно | Неизвестно | Бездействующий. Сериализует объекты в XML, не требуя определения схемы XML. |
Apache XMLBeans | Ява | Лицензия Apache 2.0 | 3.1.0, 26 марта 2019 г. | да | Неизвестно | ||
Кастор | Ява | Apache 2.0 | 1.4.1, 15 мая 2016 г. | Неизвестно | Неизвестно | Более ранние версии также поддерживали постоянство Java-to-SQL, но с тех пор это было выделено в отдельный проект. | |
CodeSynthesis XSD | C ++ | GNU GPL и проприетарный | 4.0.0, 22 июля 2014 г. | Неизвестно | Неизвестно | с SAX или древовидным отображением в классы C ++ | |
gSOAP | C и C ++ | GNU GPL и проприетарный | 8 декабря 2000 г. | 2.8.94, 17 октября 2019 г. | да | да | Поддерживает схему XML, WSDL и SOAP; XML-схемы не требуются для сериализации данных C / C ++ в XML; настраиваемое сопоставление типов схемы XML с типами C / C ++ через файл сопоставления типов и с типов C / C ++ на совместимые типы схем XML с помощью аннотации исходного кода |
Архитектура Java для привязки XML (JAXB) | Ява | ? | да | да | |||
JiBX | Ява | Лицензия BSD | 1.2.6, 1 января 2015 г. | да | да | Сопоставляет классы с XML-схемами с помощью манипуляции с байт-кодом | |
Простой | Ява | Apache 2.0 | 2.7.1, 9 февраля 2017 г. | Нет | да | ||
System.Xml.Serialization | C # | ? | да | Нет | Часть платформы .NET, содержит классы привязки данных XML; включает xsd.exe инструмент для создания классов из схемы XSD | ||
xmlbeansxx | C ++ | Apache 2.0 | 0.9.1, 1 апреля 2008 г. | Неизвестно | Неизвестно | Порт C ++ для Apache XMLBeans | |
XStream | Ява | BSD -стильная лицензия | 1 января 2004 г. | 1.4.10, 23 мая 2017 г. | Неизвестно | Неизвестно | Также возможна сериализация в JSON |
Зевс | Ява | ? | 3.5 beta, 16 августа 2002 г. | Неизвестно | Неизвестно |