Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/03/2011, 16h06   #1
dkd
Invité de passage
 
Inscription : septembre 2004
Messages : 17
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 17
Points : 2
Points : 2
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 :
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 :
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.
dkd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 16h23   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 445
Points : 10 445
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Le XML chez Oracle ce n'est pas simple, est-ce que vous ne pouvez pas utiliser les fonctions d'extraction suivantes :
Code :
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;
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 16h50   #3
dkd
Invité de passage
 
Inscription : septembre 2004
Messages : 17
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 17
Points : 2
Points : 2
Sorry, c'est un XML que je récupère en amont via UTL_HTTP.
dkd est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h53.


 
 
 
 
Partenaires

Hébergement Web