Введение

Привязка XML-данных — это способ представления информации из XML-документа в виде бизнес-объекта в памяти компьютера. Это позволяет приложениям обращаться к данным XML через этот объект, а не использовать DOM или SAX для извлечения данных непосредственно из XML-представления.

Трудности

Поскольку XML — это документоориентированный формат, а объекты (как правило) не являются таковыми, простые сопоставления для связывания данных XML могут игнорировать часть структурной информации, содержащейся в XML-документе. В частности, информация, такая как комментарии, ссылки на сущности XML и порядок следования элементов на одном уровне, может не сохраняться в объектном представлении, созданном приложением связывания данных. Однако это не всегда так: достаточно мощные инструменты связывания данных XML способны сохранять 100% информации, хранящейся в XML-документе. Аналогично, поскольку объекты, находящиеся в компьютерной памяти, не хранятся последовательно по своей природе и могут содержать ссылки на другие объекты (включая самоссылки), простые сопоставления для связывания данных XML могут быть не в состоянии сохранить всю информацию об объекте при его преобразовании в XML. Однако достаточно мощные инструменты связывания данных выполняют анализ структуры графа объектов, находящихся в памяти, чтобы преобразовать (циклические) структуры графа объектов в XML, используя стандартные атрибуты ссылок XML.

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

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

Общие обязательные данные

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

Рамки связывания XML-данных

Название Язык программирования Лицензия Первый выпуск Последний стабильный выпуск Генерация кода из XSD Пользовательское отображение Примечание Apache Commons Betwixt Java 0.8 Неактивен. Сериализует объекты в XML без необходимости определения XML-схемы Apache XMLBeans Java 5.1.1, Castor Java 1.4.1, Более ранние версии также поддерживали сохранение Java в SQL, но это было выделено в отдельный проект CodeSynthesis XSD C++ и проприетарный 4.0.0, с отображением SAX или в виде дерева в классы C++ gSOAP C и C++ и проприетарный 2000 12 08 2.8.131, Поддерживает XML-схемы, WSDL и SOAP; XML-схемы не требуются для сериализации данных C/C++ в XML; пользовательское отображение типов XML-схем в типы C/C++ через файл сопоставления типов и от типов C/C++ к совместимым типам XML-схем с помощью аннотаций в исходном коде Java Architecture for XML Binding (JAXB) Java ? JiBX Java 1.2.6, Отображает классы на XML-схемы посредством манипуляций с байт-кодом Simple Java 2.7.1, System.Xml.Serialization C# ? Часть платформы .NET, содержит классы привязки данных XML; включает инструмент xsd.exe для генерации классов из XSD-схемы xmlbeansxx C++ 0.9.1, C++ порт Apache XMLBeans XStream Java 2004 01 01 1.4.10, Также способен сериализовать в JSON Zeus Java ? 3.5 beta,