WDDX (Web Distributed Data eXchange)."/>

Le langage PHP dispose de nombreuses fonctions permettant de travailler sur les documents XML avec la librairie WDDX (Web Distributed Data eXchange).

WDDX est un mécanisme pour l'échange complexe de structures de données entre des environnements d'application.

<?xml version='1.0'?>
<!DOCTYPE wddxPacket SYSTEM 'wddx_0090.dtd'>
<wddxPacket version='0.9'>
  <header comment='Base de données des clients'/>
  <data>
  <struct>
      <var name='nom_base'>
        <string>table_personnes</string>
      </var>
      <var name='nombre_champs'>
        <number>3</number>
       </var>
       <var name='date_creation'>
         <dateTime>2001-10-01T08:30:00</dateTime>
       </var>
       <var name='tri_sur_nom'>
         <boolean value='true'/>
       </var>
       <var name='personnes'>
         <recordset rowCount='3' fieldNames='nom,prenom,sexe'>
         <field name='nom'>
           <string>MARECHEL</string>
           ...
           <string>DOGUE</string>
         </field>
         <field name='prenom'>
           <string>Jean</string>
           ...
           <string>Sylvie</string>
         </field>
         <field name='age'>
           <number>33</number>
           ...
           <number>26</number>
         </field>
         </recordset>
       </var>
   </struct>
  </data>
</wddxPacket>

Les paquets WDDX sont des représentations de structures de données instanciées dans des environnements d'application.

L'utilisation de WDDX nécessite l'installation de la librairie EXPAT et la recompilation de PHP avec --with-xml et --enable-wddx.

Fonction
Description
$chaine_WDDX = wddx_serialize_value($variable [, $commentaire]);
enregistre une valeur dans un paquet WDDX.
$chaine_WDDX = wddx_serialize_vars("variable", ..., "variable_N");
enregistre plusieurs valeurs dans un paquet WDDX.
$id_paquet_WDDX = wddx_packet_start($commentaire);
commence un nouveau paquet WDDX avec une structure.
$chaine_XML = wddx_packet_end($id_paquet_WDDX);
termine un paquet WDDX.
$chaine_XML = wddx_add_vars($id_paquet_WDDX, "variable", ..., "variable_N");
ajoute des variables à un paquet WDDX.
$valeur = wddx_deserialize($chaine_WDDX);
lit un paquet WDDX.
Exemple [voir]
<?php
  $variable = "Contenu de la variable";

  echo wddx_serialize_value($variable, "document sérialisé");
?>
<!-- Résultat affiché -->
<wddxPacket version='0.9'>
  <header comment='document sérialisé'/>
  <data>
    <string>Contenu de la variable</string>
  </data>
</wddxPacket> 

<?php
  $nom = "PARISI";
  $prenom = "Jean-Marc";
  $information = array("date_naissance" => "24 mai 1982",
                                   "adresse "=>" 145 Boulevard Raspail",
                                   "cp" => 75000,
                                   "ville" => "Paris",
                                   "pays" => "France",
                                   "tph" => "01 42 58 12 63");
  $poste = array ("Programmeur", 
                          "Junior", 
                          "service Développement A", 
                          "jm.paris@site.com");

  echo wddx_serialize_vars("nom", "prenom", "information", "poste");
?>
<!-- Résultat affiché -->
<wddxPacket version='0.9'>
  <header/>
  <data>
    <struct>
      <var name='nom'>
        <string>PARISI</string>
      </var>
      <var name='prenom'>
        <string>24/05/1982</string>
      </var>
      <var name='info'>
        <struct>
        <var name='date_naissance'>
          <string>24 mai 1982</string>
        </var>
        <var name='adresse'>
          <string>145 Boulevard Raspail</string>
        </var>
        <var name='cp'>
          <number>75000</number>
        </var>
        <var name='ville'>
          <string>Paris</string>
        </var>
        <var name='pays'>
          <string>France</string>
        </var>
        <var name='tph'>
          <string>01 42 58 12 63</string>
        </var>
        </struct>
      </var>
      <var name='poste'>
        <array length='4'>
        <string>Programmeur</string>
        <string>Junior</string>
        <string>service Développement A</string>
        <string>jm.paris@site.com</string>
        </array>
      </var>
    </struct>
  </data>
</wddxPacket>

<?php
  $nombre = 5;
  $capitales = array("Berlin", "Paris", "Londres", "Rome", "Madrid");

  $id_paquet_WDDX = wddx_packet_start("Capitales européennes");
  wddx_add_vars($id_paquet_WDDX, "nombre", "capitales");

  $representation = wddx_packet_end($id_paquet_WDDX);

  echo $representation;
?>
<!-- Résultat affiché -->
<wddxPacket version='0.9'>
  <header comment='PHP' >
  <data>
    <struct>
      <var name='nombre'>
        <number>5</number>
      </var>
      <var name='capitales'>
        <array length='5'>
        <string>Berlin</string>
        <string>Paris</string>
        <string>Londres</string>
        <string>Rome</string>
        <string>Madrid</string>
        </array>
      </var>
    </struct>
  </data>
</wddxPacket>