Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации — восстановление начального состояния структуры данных из битовой последовательности.
Сериализация используется для передачи объектов по сети и для сохранения их в файлы. Например, нужно создать распределённое приложение, разные части которого должны обмениваться данными со сложной структурой. В таком случае для типов данных, которые предполагается передавать, пишется код, который осуществляет сериализацию и десериализацию. Объект заполняется нужными данными, затем вызывается код сериализации, в результате получается, например, xml-документ. Результат сериализации передаётся принимающей стороне, например, по электронной почте или HTTP. Приложение-получатель создаёт объект того же типа и вызывает код десериализации, в результате получая объект с теми же данными, что были в объекте приложения-отправителя. По такой схеме работает, например, сериализация объектов через SOAP.
Иногда бывает удобно сериализовать XML документ (или некоторые элементы документа), преобразовав его в строку. Это может понадобиться, например, чтобы отправить XML документ в теле HTTP запроса POST, сгенерированного с помощью объекта Свойства и методы XMLHttpRequest. Нередко сериализация XML документов и их элементов выполняется для использования в отладочных сообщениях!
В броузерах на базе Mozilla сериализация выполняется с помощью объекта XMLSerializer. В IE еще проще: с помощью свойства xml XMLобъекта Document или Element, возвращающего содержимое документа или элемента в сериализованной форме.
В примере приводится программный код, выполняющий сериализацию в броузерах Mozilla и IE.
/** * Сериализует XML документ или XML элемент и возвращает его в виде строки. */ XML.serialize = function(node) { if (typeof XMLSerializer != "undefined") return (new XMLSerializer()).serializeToString(node); else if (node.xml) return node.xml; else throw "XML.serialize не поддерживается или не может сериализовать " + node; };