Связывание данных XML относится к средствам представления информации в документе XML как бизнес-объекта в памяти компьютера. Это позволяет приложениям получать доступ к данным в XML из объекта, а не использовать DOM или SAX для извлечения данных из прямого представления самого XML.
Он позволяет читать и записывать XML- данные с помощью библиотеки классов языка программирования (например, C++ , C# , Java ), специально созданной для заданного формата XML-данных. [1] Хотя для этого можно вручную написать компьютерную программу, инструменты привязки 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) часто подходит для легких или ограниченных приложений.