OVH Cloud OVH Cloud

nuSOAP et XML

1 réponse
Avatar
heraud.kevin
Bonjour,

J'ai crée un petit Web Service avec nuSAOP, pour requeter dans une
base de données Access, dc avec l'utilisatiion de drivers ODBC (sous
Windows). Il y a t'il un moyen, via nuSOAP, de renvoyer le resultat de
ma requete par un "flux" XML. En gros, je voudrais savoir si il existe
des classes qui permettrai de "convertir" un odbc result en XML. Sinon,
il me semble assez aisé de generer un fichier XML à la main.

Autre question: Quelle est la difference entre l'utilisation de SOAP
natif a PHP et nuSOAP ?

Merci

1 réponse

Avatar
Hughes Monget
wrote:

En gros, je voudrais savoir si il existe des classes qui permettrai de
"convertir" un odbc result en XML. Sinon, il me semble assez aisé
de generer un fichier XML à la main.



Salut,


Il suffisait de venir me demander ;-)


<?php

// Connexion à la base de données.
$rsc_connexion = odbc_connect('DSN_TEST', '', '');

if ($rsc_connexion === FALSE)
{
exit('Problème de connexion à la base de données.');
}

// Définition et exécution de la requête.
$str_sql = 'select * from table_test';
$rsc_resultat = odbc_exec($rsc_connexion , $str_sql);

if ($rsc_resultat === FALSE)
{
exit('Problème de requête à la base de données.');
}

// Construction d'un tableau de résultats de la requête.
$arr_arr_les_resultats = Array();
while (($arr_resultat = odbc_fetch_array($rsc_resultat)) !== FALSE)
{
$arr_arr_les_resultats[] = $arr_resultat;
}

// Fermeture de la connexion.
odbc_close($rsc_connexion);

// Création du DOM document.
$obj_dom_document = new DOMDocument();

$obj_dom_document->preserveWhiteSpace = FALSE;
$obj_dom_document->formatOutput = TRUE;

// Création de la racine.
$obj_dom_element_racine $obj_dom_document->createElement('liste_resultats');
$obj_dom_document->appendChild($obj_dom_element_racine);

// Boucle d'ajout d'un résultat.
foreach ($arr_arr_les_resultats as $arr_resultat)
{
$obj_dom_element_resultat = $obj_dom_document->createElement('resultat');

// Boucle d'ajout des champs.
foreach ($arr_resultat as $str_nom_champs => $str_valeur_champs)
{
$obj_dom_element_un_champs = $obj_dom_document->createElement('champs');
$obj_dom_element_un_champs->setAttribute('nom',
utf8_encode($str_nom_champs));
$obj_dom_element_un_champs->nodeValue = utf8_encode($str_valeur_champs);
$obj_dom_element_resultat->appendChild($obj_dom_element_un_champs);
}

$obj_dom_element_racine->appendChild($obj_dom_element_resultat);
}

// Récupération et affichage du xml.
$str_xml = $obj_dom_document->saveXml();
echo('<pre>');
echo(htmlentities($str_xml));
echo('</pre>');

// Sauvegarde du fichier xml.
$obj_dom_document->save('resultats.xml');

?>

<?xml version="1.0"?>
<liste_resultats>
<resultat>
<champs nom="ID_TEST">1</champs>
<champs nom="VALEUR_TEST">toto</champs>
</resultat>
<resultat>
<champs nom="ID_TEST">2</champs>
<champs nom="VALEUR_TEST">tata</champs>
</resultat>
<resultat>
<champs nom="ID_TEST">3</champs>
<champs nom="VALEUR_TEST">tutu</champs>
</resultat>
</liste_resultats>


--
hughes monget
(tuteur de stage de kévin)