PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : PL/pgSQL » manipulation xml en plpgsql avec postgreSQL 8.3 » 18/01/2011 10:17:10

Bonjour,

voici un petit résumé de mon état d'avance (au cas ou quelqu'un souhaiterait répondre à la même problèmatique que moi)

J'ai mis en place une fonction trigger permettant de valider la modification d'un champ avant son enregistrement dans un table d'une base de données PostgreSQL 8.3.6 installée à partir du package de binaires Windows téléchargé sur le site http://www.postgresql.org. Cette installation se fait par défaut avec le module libxml de configuré ce qui permet un certain nombre de manipulation 'xml'.( libxml2 n'est pas configuré ).

Le champ en question est de type texte mais contient des données formatées en XML.
Il me faut tester la valeur 'donnée4' qui est une chaine dans un champ de la forme :

<... entete XML configuré en UTF 16...>
<rootNode>
  <balise1>
    <balise11>donnée1 </balise11>
    <balise12>donnée2 </balise12>
  </balise1>
  <balise2>
    <balise21>donnée3 </balise21>
    <balise22>donnée4 </balise22>
  </balise2>
</rootNode>

le code résumé de cette fonction est le suivant :

DECLARE
  maVariableXML xml;
  monChampTEXTE text;
BEGIN
  IF (TG_OP = 'UPDATE') THEN
    IF OLD.ChampTextContenantDesDonnéesXML <> NEW.ChampTextContenantDesDonnéesXML
       maVariableXML := XMLPARSE(DOCUMENT NEW.ChampTextContenantDesDonnéesXML);
       monChampTEXTE :=  xpath('/rootNode/balise2/balise22/text()',maVariableXML);

       -- ici monChampTEXTE contient {donnée4} avec les accolades --

       IF monChampTEXTE..... THEN
             .... ensemble de traitement
       END IF;
       RETURN NEW;
    END IF;
  END IF;
END;

C'est déjà pas mal... maintenant si j'arrivais à récupérer donnée4 sans les accolades, je serais le roi du monde smile. Je continu donc à chercher l'éventuel paramètre à passer à la fonction xpath pour ne pas avoir à bricoler la chaine reçue.

En espérant avoir été clair,
je remercie toutes les personnes m'ayant donné un coup de main à dégrossir le problème car je partais de ZERO.

#2 Re : PL/pgSQL » manipulation xml en plpgsql avec postgreSQL 8.3 » 17/01/2011 13:09:24

merci pour la réponse si rapide...

il me vient une autre question du coup... pour l'utilisation de libxml, vous dites qu'il faut recompiler ??? c'est à dire récupèrer directement les sources de postgreSQL pour les recompiler pour ensuite réinstaller postgreSQL ?... ou bien vous entendez autre chose par recompiler ?

Le logiciel est installé sous sous windows xp et 7.

#3 PL/pgSQL » manipulation xml en plpgsql avec postgreSQL 8.3 » 17/01/2011 12:44:33

mrZeby
Réponses : 5

Bonjour tout le monde...

Je suis développeur logiciel sur un logiciel utilisant une base de données postgreSQL 8.3.

Je cherche à mettre au point une fonction trigger en plpgsql qui récupère un champ de type texte mais dont le contenu est du xml dont j'ai besoin de vérifier une donnée pour valider ou non l'enregistrement des modifications.

Peut-on et si oui comment, en plpgsql passer d'un texte à du xml dont je pourrais récupérer les données ?

Il me semble avoir lu dans la doc postgreSQL qu'il fallait utiliser/configurer libxml ? comment le faire sur une base existante ?

merci d'avance pour vos réponses...

Pied de page des forums

Propulsé par FluxBB