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

XQUERY/SGBD XML Discussion :

PL/SQL Parser XML


Sujet :

XQUERY/SGBD XML

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 16
    Points
    16
    Par défaut PL/SQL Parser XML
    Bonjour,

    J'ai un problème avec le parsing d'un flux XML en PL/SQL.

    Voici le code que j'utilise pour parser ce fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       nomfic := BFileName(wa_repertoire, p_fichier);
       DBMS_LOB.fileOpen(nomfic);
       dbms_lob.createtemporary(destfile,true,dbms_lob.session);
       w_length:=DBMS_LOB.getlength (nomfic);
       DBMS_LOB.loadfromfile (destfile, nomfic, w_length);
       DBMS_LOB.fileclose (nomfic);
       p := xmlparser.newparser;
       xmlparser.setbasedir (p, wa_repertoire);
       xmlparser.ParseClob(p,destfile);
       thexmldoc := xmlparser.getdocument (p);

    Or, arrivé à "xmlparser.ParseClob(p,destfile)", j'ai une erreur Oracle:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ORA-31011: XML parsing failed
    ORA-19202: Error occurred IN XML processing
    LPX-00210: expected '<' instead of '?'
    Error at line 1

    Tout porte à croire que le problème vient du fichier xml mais je ne vois pas d'où:

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?xml version='1.0' encoding='UTF-8'?><OPCR><OP><CodeActivite>AB </CodeActivite><OrdrePreparation>185264</OrdrePreparation><EtatPreparation>10</EtatPreparation><DateCreation>2008-08-11T06:20:08.483</DateCreation><DateFinTraitement>2008-08-11T10:59:16.030</DateFinTraitement><NbColis>1</NbColis><FluxEDI>fluxcde.xml</FluxEDI><Ligne><CodeArticle>24654JHK</CodeArticle><QuantiteCommandee>1</QuantiteCommandee><QuantiteLivree>1</QuantiteLivree></Ligne><Colis><GestionTransport>UPS STANDARD GL</GestionTransport><ContratTransport>UPS GL</ContratTransport><NoChargement>69</NoChargement><DateChargement>2008-08-11T15:30:19.373</DateChargement><NoColis>26544454654KHJK555465</NoColis><RangColis>1</RangColis><Poids>168</Poids><Emballage>111</Emballage><Volume>7</Volume><VaguePreparation>ABVH080811-01</VaguePreparation><LigneColis><CodeArticle>445654NHJK</CodeArticle><Quantite>1</Quantite></LigneColis></Colis></OP></OPCR>

    Quelqu'un saurait il résoudre ce problème?

    Merci par avance pour votre aide.

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Petite précision lorsque j'essaye de parser mon fichier en passant par un varchar2, cela fonctionne sans problème.
    Par contre mon fichier étant en ligne et donc pas indenté j'arrive rapidement à la limite des 32000 caractères d'ORACLE.

    Existe t'il une fonction qui permettrait d'indenter automatiquement mon fichier XML (via PL/SQL ou SHELL)?
    Ou
    Comment passer à la ligne aprés chaque fermeture de balise?

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    bonjour, je voudrais savoir si tu as pu résoudre ton problème et si oui , comment?

    je rencontre actuellement le meme soucis :
    je pense que cela vient de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DBMS_LOB.loadfromfile (destfile, nomfic, w_length)
    j ai donc essayé d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DBMS_LOB.loadClobfromfile(ClobContent,targetFile,dbms_lob.getLength(targetFile),1,1,NLS_CHARSET_ID('UTF8'),dbms_lob.default_lang_ctx,warning)
    mais la je fais face a une autre erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ORA-19202: Une erreur s'est produite lors du traitement la fonction XML (
    LPX-00004: erreur interne "MultiChar overflow"
    ce "MultiChar overflow" ne serait il pas lié à dbms_lob.getLength(targetFile) en paramètre de DBMS_LOB.loadClobfromfile (qui correspond dans ta fonction a w_length)

    si quelqu un a une idée

    merci de vos retours

Discussions similaires

  1. parser xml avec pl/sql
    Par opensource dans le forum PL/SQL
    Réponses: 0
    Dernier message: 21/01/2010, 20h09
  2. [Recherche] Parser requetes SQL en XML
    Par UnnamedBoy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/01/2008, 13h28
  3. parser xml pl/sql
    Par eidole62 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 28/12/2007, 10h59
  4. Parser XML
    Par miloux32 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 18/07/2003, 03h17
  5. [DEB.] - Transposer une table SQL en XML SCHEMA ???
    Par oulahoup dans le forum Valider
    Réponses: 2
    Dernier message: 10/06/2003, 15h11

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