Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
950 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU][Oracle - SQL] Problème parsing xml

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU][Oracle - SQL] Problème parsing xml

n°1671493
bertrand48​4
Posté le 15-01-2008 à 14:34:56  profilanswer
 

Bonjour,  
 
J'ai un souci avec un bout de code:
 

Code :
  1. CREATE OR REPLACE PROCEDURE P_recup
  2. IS
  3. url VARCHAR2(400);
  4. wa_xmldiagnostic xmldom.domdocument;
  5. BEGIN
  6. url:='monadresse.fr';
  7. xml_http.get(url,wa_xmldiagnostic);
  8. END;


Quand j'execute ce code j'ai un message d'erreur:

Code :
  1. ORA-31011: Echec d'analyse XML
  2. ORA-19202    : Une erreur s'est produite lors du traitement la fonction XML (
  3. LPX-00200    : conversion impossible de l'encodage UTF-8 en UCS2
  4.               Error at line 1
  5.               )
  6. ORA-06512    : à "XDB.DBMS_XMLPARSER", ligne 156
  7. ORA-06512    : à "SOC1.XML", ligne 34
  8. ORA-06512    : à "SOC1.XML_HTTP", ligne 10
  9. ORA-06512    : à "SOC1.XML_HTTP", ligne 51
  10. ORA-06512    : à "SOC1.P_recup", ligne 37
  11. ORA-06512    : à ligne 12


L'execution plante dans les packages xml et je ne sais pas pourquoi (apparemment dés qu'il fait un parseBuffer).
Voici le fichier xml au cas où (sachant qu'il m'est impossible de le modifier):

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <result version="3.1" site="idsite" refid="Cmd-02" retour="trouvee" count="2">
  3. <transaction avancement="traitee" cid="952413554">
  4.  <detail>Absence des informations bancaires</detail>
  5.  <analyse>
  6.   <eval date="23/11/2007 10:21:18" critere="-1" validation="Risque faible" info="acheteur récent">-1</eval>
  7.   <classement id="15">Transactions traitées/Validées/Automatiquement</classement>
  8.  </analyse>
  9. </transaction>
  10. <transaction avancement="traitee" cid="95299164">
  11.  <detail>Absence des informations bancaires</detail>
  12.  <analyse>
  13.   <eval date="23/11/2007 10:19:34" critere="-1" validation="Risque faible" info="nouvel acheteur">-1</eval>
  14.  </analyse>
  15. </transaction>
  16. </result>


Message édité par bertrand484 le 16-01-2008 à 14:35:41
mood
Publicité
Posté le 15-01-2008 à 14:34:56  profilanswer
 

n°1671565
MagicBuzz
Posté le 15-01-2008 à 16:00:47  profilanswer
 

d'après la source de ton fichier XML, il est en ISO-8859-1 au lieu de UTF-8.
 
et d'après l'erreur, Oracle s'attends à lire de l'UTF-8, ce qui peut aisément expliquer l'erreur.

n°1671588
bertrand48​4
Posté le 15-01-2008 à 16:19:04  profilanswer
 

Merci pour ta réponse.
J'avais eu le même raisonnement que toi mais lorsque je passe mon fichier xml dans un varchar et que derrière je fait un xml.parse(fichier) cela fonctionne sans problème (xml.parse est une fonction qui utilise exactement les même fonctions des packages xml que l'autre méthode sauf que de passer par l'url je lui passe directement le fichier en varchar)

n°1671602
MagicBuzz
Posté le 15-01-2008 à 16:33:38  profilanswer
 

à la différence près que lorsque tu stockes dans ton varchar, le charset est adapté, et surtout, lorsque le package relis ton varchar, il connait le charset utilisé, certainement du ISO-8859-15 justement.
 
à mon avis, soit Oracle part du principe qu'une URI se doit de servir de l'UTF-8 uniquement, soit ton serveur web envoie en entête HTTP le charset UTF-8, et Oracle ne respecte pas le protocole, à savoir que le charset stipulé dans le fichier XML est censé primer sur celui utilisé pour le protocole de transport.

n°1672058
bertrand48​4
Posté le 16-01-2008 à 12:08:31  profilanswer
 

Merci de m'avoir éclairé sur mon problème.
 
J'ai changé de méthode et maintenant ça fonctionne parfaitement.
Je mets mon bout de code au cas où ça peut aider d'autres personnes.

Code :
  1. CREATE OR REPLACE FUNCTION f_demandereponse () RETURN xmldom.domdocument
  2. IS--------------------------
  3. -- Déclarations variables.
  4. --------------------------
  5.    wa_xmldiagnostic   xmldom.domdocument;
  6.    webpageurl           HTTPURITYPE;
  7.    webpage              CLOB;
  8.    xmldocument        xmldom.domdocument;
  9. BEGIN
  10.      --Creation de l'url pour récupérer le flux xml
  11.    webpageurl :=
  12.       HTTPURITYPE.createuri
  13.          ('http://monadresse.fr);
  14.    --Récupérer le flux XML par HTTP
  15.    webpage := webpageurl.getclob ();
  16.    -- Parsing du fichier XML
  17.    wa_xmldiagnostic := xml.parse (webpage);
  18.    RETURN wa_xmldiagnostic;
  19. END;


 
Comment on fait pour fermer le post?


Message édité par bertrand484 le 16-01-2008 à 12:13:57

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU][Oracle - SQL] Problème parsing xml

 

Sujets relatifs
[CSS] Problème avec une image de fond[Résolu] PB pour enregistrer des données dans la BSD ACCESS avec VBA
probleme avec l'actualisationproblème de cookie
[Oracle] et batchs...[résolu] Erreur pour validation W3C à cause d'URLs avec paramètres
SQL - Recherche mot dans une table ?probleme de boucle
probleme de hickageLire et écrire dans une base de données SQL via Excel
Plus de sujets relatifs à : [RESOLU][Oracle - SQL] Problème parsing xml


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR