IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Recupération d'un CDATA


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    dkd
    dkd est déconnecté
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 17
    Par défaut Recupération d'un CDATA
    Bonjour à tous,

    Je doit récupérer des informations contenues dans un XML. Je récupère tout sauf le contenu qui est en CDATA.

    Voici le XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="utf-8"?>
    <command>
      <failure_data>
        <code>7</code>
        <msg><![CDATA[Impossible de chercher une solution.
    	Il faut encore essayer.]]></msg>
      </failure_data>
    </command>
    Et voici mon code correspondant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    FUNCTION Fc_Decode_retour_XML (p_XML_retour IN CLOB) RETURN NUMBER 
    IS
     
    l_Parser     		XmlParser.Parser;
    l_doc				XMLDOM.DOMDocument;
    l_Node_Command      XmlDom.DomNode;
     
    l_Node_Failure      XmlDom.DomNode;
    l_Node_Msg			XmlDom.DomNode;
     
    l_message_erreur					varchar2(1024);
     
    l_i_retour integer;
    BEGIN
    	l_Parser := XmlParser.NewParser;
    	XmlParser.SetValidationMode(l_Parser, FALSE);
    	XmlParser.ParseClob(l_Parser, p_XML_retour);
    	l_doc := XmlParser.GetDocument(l_Parser);
    	XmlParser.FreeParser(l_Parser);
     
    	l_Node_Command := xslprocessor.selectNodes(l_doc,  'command');				
    	l_Node_Failure := xslprocessor.selectNodes(l_Node_Command,  'failure_data');				
     
    	l_i_retour := to_number(xslprocessor.VALUEOF(l_Node_Failure, 'code'));				
    	l_Node_msg :=  xslprocessor.selectNodes(l_Node_Failure,  'msg');
     
    	l_MESSAGE_ERREUR := xslprocessor.selectNodes(l_Node_msg, xmldom.CDATA_SECTION_NODE);
    	dbms_output.put_line(l_message_erreur);	
     
    	XmlParser.FreeParser(l_Parser);
    	RETURN l_i_retour;			 
     
    EXCEPTION
    WHEN OTHERS THEN
        XmlParser.FreeParser(l_Parser);
    		return SQLCODE;
    END Fc_Decode_retour_XML;
    Je vous remercie par avance de votre aide.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Le XML chez Oracle ce n'est pas simple, est-ce que vous ne pouvez pas utiliser les fonctions d'extraction suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    With Fichier as
    (
    select XMLType(
    '<?xml version="1.0" encoding="utf-8"?>
    <command>
      <failure_data>
        <code>7</code>
        <msg><![CDATA[Impossible de chercher une solution.
        Il faut encore essayer.]]></msg>
      </failure_data>
    </command>') as tst
      from dual
    )
    select Extract     (tst, '/command/failure_data/msg') as XML,
           ExtractValue(tst, '/command/failure_data/msg') as Value
      from Fichier;

  3. #3
    dkd
    dkd est déconnecté
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 17
    Par défaut
    Sorry, c'est un XML que je récupère en amont via UTL_HTTP.

Discussions similaires

  1. [rowid] recupération du rowid
    Par cibouseb dans le forum Oracle
    Réponses: 17
    Dernier message: 14/08/2003, 14h23
  2. [Indy TCPClient] Recupérer le données reçues
    Par fandor7 dans le forum Web & réseau
    Réponses: 8
    Dernier message: 29/06/2003, 21h52
  3. [Winsock] Envoi et recupération d'une image
    Par arnolanf dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 29/11/2002, 08h49
  4. recupèrer file d'attente d'impression
    Par magic corp. dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2002, 14h12
  5. comment puis-je recupérer l'extesion du fichier?
    Par mirella dans le forum Langage
    Réponses: 7
    Dernier message: 14/08/2002, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo