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 :

XmlDom


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 238
    Par défaut XmlDom
    bonjour,

    j'essaye d'utiliser le package XMLDOM en plsql
    mais j'ai un petit soucis pour avoir le bon résultat

    en fait je dois avoir ceci comme résultat

    <?xml version="1.0"?>
    <MARKERS>
    <marker lat="123" lng="123">
    <message>mon message</message>
    <zone type="multipoint" lineColor="#0033FF" lineWidth="1"
    lineOpacity="1" fillColor="#0000FF" fillOpacity="0.1">
    <p lat="1345" lng="1234"></p>
    <p lat="1345" lng="1234"></p>
    <p lat="1345" lng="1234"></p>
    </zone>
    </marker>
    </MARKERS>
    et j'arrive à obtenir ceci ....mais pas le fin !!!

    <?xml version="1.0"?>
    <MARKERS>
    <marker lat="123" lng="123">
    <message>mon message</message>
    <zone type="multipoint" lineColor="#0033FF" lineWidth="1"
    lineOpacity="1" fillColor="#0000FF" fillOpacity="0.1"/>
    </marker>
    </MARKERS>
    il me manque donc ceci

    <p lat="1345" lng="1234"></p>
    <p lat="1345" lng="1234"></p>
    <p lat="1345" lng="1234"></p>
    voici mon code :
    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
     
            doc xmldom.DOMDocument;
            main_node xmldom.DOMNode;
            root_node xmldom.DOMNode;
            user_node xmldom.DOMNode;
            point_node xmldom.DOMNode;
            item_node xmldom.DOMNode;
            root_elmt xmldom.DOMElement;
            item_elmt xmldom.DOMElement;
            item_text xmldom.DOMText;
    begin
         doc := xmldom.newDOMDocument;
         DBMS_XMLDOM.setVersion(doc, '1.0');
         DBMS_XMLDOM.setStandalone(doc, '''yes''');
     
         main_node := xmldom.makeNode(doc);
         root_elmt := xmldom.createElement(doc,'MARKERS');
         root_node := xmldom.appendChild(main_node,xmldom.makeNode(root_elmt));
     
         item_elmt := xmldom.createElement(doc,'marker');
         xmldom.setAttribute(item_elmt,'lat','123');
         xmldom.setAttribute(item_elmt,'lng','123');
         user_node := xmldom.appendChild(root_node,xmldom.makeNode(item_elmt));
     
         item_elmt := xmldom.createElement(doc,'message');
         item_node := xmldom.appendChild(user_node,xmldom.makeNode(item_elmt));
         item_text := xmldom.createTextNode(doc,'mon message');
         item_node := xmldom.appendChild(item_node,xmldom.makeNode(item_text));
     
         item_elmt := xmldom.createElement(doc,'zone');
             xmldom.setAttribute(item_elmt,'type','multipoint');
             xmldom.setAttribute(item_elmt,'lineColor','#0033FF');
             xmldom.setAttribute(item_elmt,'lineWidth','1');
             xmldom.setAttribute(item_elmt,'lineOpacity','1');
             xmldom.setAttribute(item_elmt,'fillColor','#0000FF');
             xmldom.setAttribute(item_elmt,'fillOpacity','0.1');
         item_node := xmldom.appendChild(user_node,xmldom.makeNode(item_elmt));
     
         DBMS_XMLDOM.writeToBuffer(doc, v_cresult);
         dbms_output.PUT_LINE(substr(v_cResult,1,4000));
         xmldom.freeDocument(doc);
     
    end;
    En fait, j'ai remarqué,
    de 1 :

    que je n'ai pas le tag de fin de 'zone' = à </zone>

    de 2 :
    que si j'ajoutais un élément supplémentaire quel qu'il soit après mon
    tag "zone", genre ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    item_elmt := xmldom.createElement(doc,'a');
    item_node := xmldom.appendChild(user_node,xmldom.makeNode(item_elmt));
    item_text := xmldom.createTextNode(doc,'b');
    item_node := xmldom.appendChild(item_node,xmldom.makeNode(item_text));
    j'avais tj l'erreur suivante :

    ERROR:
    ORA-06502: PL/SQL: numeric or value error: host bind array too small
    ORA-06512: at line 1
    Merci pour votre aide

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Par défaut
    Salut, voilà ce que j'ai trouvé :

    1. Il met bien une fin de balise mais dans la meme étiquette qui est affichée par "/>", si tu veux avoir explicitement le </zone> ajoute un text node null.

    2. Je n'ai pas la même erreur que toi.

    voila ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    begin dbms_output.get_line(:ln,:st); end;
    Error at line 1
    PL/SQL procedure successfully completed.
    Je pense qu'il y'a un problème de capacité, si j'execute le code ci-dessous ca passe, si j'execute le code en rajoutant un 'a' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    item_elmt := xmldom.createElement(doc,'aaa');
    plutot que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    item_elmt := xmldom.createElement(doc,'aa');
    J'obtient l'erreur qui je pense (chez moi) s'apparente à un problème de capacité. J'avais essayé via un autre package et j'avais laissé tombé et finalement codé en java ^^

    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
     
    set serveroutput on;declare
            v_cResult varchar2(32000);
            doc xmldom.DOMDocument;
            main_node xmldom.DOMNode;
            root_node xmldom.DOMNode;
            user_node xmldom.DOMNode;
            point_node xmldom.DOMNode;
            item_node xmldom.DOMNode;
            root_elmt xmldom.DOMElement;
            item_elmt xmldom.DOMElement;
            item_text xmldom.DOMText;
    begin
         doc := xmldom.newDOMDocument;
         DBMS_XMLDOM.setVersion(doc, '1.0');
         DBMS_XMLDOM.setStandalone(doc, '''yes''');
     
         main_node := xmldom.makeNode(doc);
         root_elmt := xmldom.createElement(doc,'MARKERS');
         root_node := xmldom.appendChild(main_node,xmldom.makeNode(root_elmt));
     
         item_elmt := xmldom.createElement(doc,'marker');
         xmldom.setAttribute(item_elmt,'lat','123');
         xmldom.setAttribute(item_elmt,'lng','123');
         user_node := xmldom.appendChild(root_node,xmldom.makeNode(item_elmt));
     
         item_elmt := xmldom.createElement(doc,'message');
         item_node := xmldom.appendChild(user_node,xmldom.makeNode(item_elmt));
         item_text := xmldom.createTextNode(doc,'mon message');
         item_node := xmldom.appendChild(item_node,xmldom.makeNode(item_text));
     
         item_elmt := xmldom.createElement(doc,'zone');
             xmldom.setAttribute(item_elmt,'type','multipoint');
             xmldom.setAttribute(item_elmt,'lineColor','#0033FF');
             xmldom.setAttribute(item_elmt,'lineWidth','1');
             xmldom.setAttribute(item_elmt,'lineOpacity','1');
             xmldom.setAttribute(item_elmt,'fillColor','#0000FF');
             xmldom.setAttribute(item_elmt,'fillOpacity','0.1');
         -- 1. pour le </zone>
         item_node := xmldom.appendChild(user_node,xmldom.makeNode(item_elmt));
         item_text := xmldom.createTextNode(doc,'');
         item_node := xmldom.appendChild(item_node,xmldom.makeNode(item_text));
     
         -- 2. pour l'erreur               
         item_elmt := xmldom.createElement(doc,'aa');
         item_node := xmldom.appendChild(user_node,xmldom.makeNode(item_elmt));
     
     
         DBMS_XMLDOM.writeToBuffer(doc, v_cresult);
         dbms_output.PUT_LINE(substr(v_cResult,1,32000));
         xmldom.freeDocument(doc);
     
    end;

Discussions similaires

  1. lire et traiter un fichier XML avec XMLDOM
    Par Phiss dans le forum ASP
    Réponses: 14
    Dernier message: 13/02/2007, 16h47
  2. Réponses: 1
    Dernier message: 22/12/2005, 15h45
  3. DMBS_XMLDOM / XMLDOM
    Par robris dans le forum Oracle
    Réponses: 9
    Dernier message: 16/11/2005, 10h19
  4. [XSL - XMLDOM] Attibuer une valeur à xsl:param
    Par Trin dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/11/2005, 14h52
  5. [DOM XML] XMLDOM et PHP
    Par trent94 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 03/10/2005, 11h44

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