Обмен данными с помощью WDDX

Задача
Необходимо преобразовать данные в последовательный вид с помощью формата WDDX или провести обратное преобразование принятых в формате WDDX данных. Это позволит общаться со всеми, кто поддерживает формат WDDX.

Решение
Используем PHP-расширение WDDX. Переводим несколько переменных в последовательную форму с помощью функции wddx_serialize_vars():

$a = 'string data';
$b = 123;
$c = 'rye';
$d = 'pastrami';
$array = array('c', 'd');
$wddx = wddx_serialize_vars('a', 'b', $array);

Также можно запустить пакет WDDX с помощью функции wddx_packet_start() и добавлять данные по мере их поступления с помощью функции wddx_add_vars():

$wddx = wddx_packet_start('Some of my favorite things');
// выполняем цикл по данным
while ($array = mysql_fetch_array($r)) {
$thing = $array['thing'];
wddx_add_vars($wddx, 'thing');
}
$wddx = wddx_packet_end($wddx);

Используем функцию wddx_deserialize() для сериализации данных:

// переменная $wddx содержит пакет WDDX
$vars = wddx_deserialize($wddx);

Обсуждение
WDDX, расшифровываемый как формат обмена распределенной вебинформацией (Web Distributed Data eXchange), был одним из первых XML-форматов совместного использования информации, основанных на принципе независимости от языка.


Придуманный компанией под
эгидой ColdFusion, формат WDDX достиг большой популярности в 1999 году, но в настоящее время совсем не развивается.

Вместо WDDX многие начали использовать SOAP. Но формат WDDX имеет свое преимущество простоты. Поэтому если для вас главным является информация, которой вы обмениваетесь, то WDDX может статьхорошим выбором. Кроме того, вследствие происхождения его легко читать и записывать в ColdFusion. Если требуется взаимодействие с приложением ColdFusion, формат WDDX будет очень полезен.

Формату WDDX требуется библиотека expat, доступная в Apache версии 1.3.7 и выше или на сайте http://www.jclark.com/xml/expat.html.

Для работы с WDDX сконфигурируйте PHP с опциями --with-xml
и --enable-wddx.

Пример в «Решении» выдает следующий XML-документ (отформати-
рованный для облегчения восприятия):





string data
123
rye
pastrami




Переменные заключены в теги , в которых атрибуту name в качестве значения присвоено имя переменной.


Внутри этих тегов находится ряд других, означающих тип переменных, таких как string, number, dateTime, boolean, array, binary или recordSet. И наконец, внутри находятся сами данные.

Кроме того, можно сериализовать одну переменную за раз с помощью функции wddx_serialize_value:

// one variable
$s = wddx_serialize_value('Serialized', 'An optional comment');

В результате получим следующий XML-текст:



An optional comment


Serialized



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Анализ XML с помощью DOM
Анализ XML с помощью SAX
Генерация XML вручную
Генерация XML с применением DOM
Посылка SOAP-запросов

Вернуться в раздел: PHP / 12. XML