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

PL/SQL Oracle Discussion :

parseur pl sql xml


Sujet :

PL/SQL Oracle

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 360
    Par défaut parseur pl sql xml
    Bonjour,
    j'ai un fichier XML stocké dans le systeme et je veux parser ce fichier XML avec PL SQL dont voila le code de la procedure :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    PROCEDURE    READXML
    (
            path IN varchar2,
            file IN varchar2,
            errors_file IN varchar2
    ) IS
            parser xmlParser.parser;
            document xmlDom.DomDocument;
     
            nodes xmlDom.DomNodeList;
            node xmlDom.DomNode;
            length1 number;
            length2 number;
            element xmlDom.DomElement;
            attributes xmlDom.DomNamedNodeMap;
            attributename varchar2(100);
            attributevalue varchar2(100);
     
    BEGIN
     
     -- Creer un nouveau parseur
     parser := xmlParser.NewParser;
     
     -- Règle les parametres du parseur
     xmlParser.SetValidationMode(parser, FALSE);
     xmlParser.SetErrorLog(parser, path || '/' || errors_file);
     xmlParser.SetBaseDir(parser, path);
     
     -- Parse le fichier
     xmlParser.Parse(parser, path || '/' || file);
     
     -- Recupère un document
     document := xmlParser.GetDocument(parser);
     
     --------------------
     -- affiche les noeuds trouvés
     --------------------
     dbms_output.put_line('Show Elements :');
     nodes := xmlDom.GetElementsByTagName(document, '*');
     length1 := xmlDom.GetLength(nodes);
     FOR i IN 0..length1-1 LOOP
       -- Affecte le noeud comme noeud courant
       node := xmlDom.Item(nodes, i);
       dbms_output.put(xmlDom.GetNodeName(node) || '   ');
     END LOOP;
     dbms_output.put_line(' ');
     --------------------
     
     --------------------
     -- Affiche les Attributs de chaque noeud
     --------------------
     dbms_output.put_line('');
     FOR i IN 0..length1-1 LOOP
       -- Affecte le noeud comme noeud courant
       node := xmlDom.Item(nodes, i);
       element := xmlDom.MakeElement(node);
       dbms_output.put(xmlDom.GetTagName(element) || ' :');
     
       attributes := xmlDom.GetAttributes(node);
     
       IF NOT xmlDom.isNull(attributes) THEN
          length2 :=  xmlDom.GetLength(attributes);
          FOR j IN 0..length2-1 LOOP
              -- Affecte l'attribut comme attribut courent
              node := xmlDom.Item(attributes, j);
              attributename := xmlDom.GetNodeName(node);
              attributevalue := xmlDom.GetNodeValue(node);
              dbms_output.put(' ' || attributename || '=' || attributevalue);
          END LOOP;
          dbms_output.put_line(' ');
       END IF;
     END LOOP;
     --------------------
     
     -- libère le document
     xmlDom.FreeDocument(document);
     
     -- libère le parser
     xmlParser.FreeParser(parser);
     
    END;
    mais lors j'execute la procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DECLARE
    BEGIN
     
    -- Now call the stored program
      tp.readxml('C:\TEMP','TEST.xml','histo.txt');
     
    EXCEPTION
    WHEN OTHERS THEN
      dbms_output.put_line(SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1, 255));
    RAISE;
    END;
    une erreur est signalé à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [1]: (Error): ORA-31020: L'opération est interdite ; raison : Not supported ORA-06512: à ligne 10
    Merci de votre aide?
    Remarque :
    je pose des questions dans le forum mais je n'obtiens pas ni solutions ni remarque !! (Soit je suis pas clair dans les questions soit ....??)

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 360
    Par défaut
    lorsque je debug la procedure je trouve le blocage au niveau de ces deux ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    xmlParser.SetErrorLog(parser, path || '/' || errors_file);
     xmlParser.SetBaseDir(parser, path);
     
     -- Parse le fichier
     xmlParser.Parse(parser, path || '/' || file);
    Merci pour l'aide !!

Discussions similaires

  1. Requeter Mysql sans passer par du sql -xml?-
    Par Malone dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/08/2006, 14h02
  2. [SQL] [XML/PHP/SQL]exploiter au mieux un fichier text
    Par freija dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/07/2006, 11h38
  3. Parseur fichier Log XML
    Par Benbedo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 21/07/2006, 08h48
  4. [XML] [EXPAT] Parseur PHP flux xml
    Par Sam53 dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 30/03/2006, 20h49
  5. Réponses: 1
    Dernier message: 29/12/2005, 09h37

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