Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 27/09/2008, 15h20   #1
Membre régulier
 
Inscription : octobre 2002
Messages : 227
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : octobre 2002
Messages : 227
Points : 78
Points : 78
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

Citation:
<?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 !!!

Citation:
<?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

Citation:
<p lat="1345" lng="1234"></p>
<p lat="1345" lng="1234"></p>
<p lat="1345" lng="1234"></p>
voici mon code :
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
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 :
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 :

Citation:
ERROR:
ORA-06502: PL/SQL: numeric or value error: host bind array too small
ORA-06512: at line 1
Merci pour votre aide
lediz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2008, 18h22   #2
Membre habitué
 
Inscription : janvier 2007
Messages : 148
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 148
Points : 145
Points : 145
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 :
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 :
item_elmt := xmldom.createElement(doc,'aaa');
plutot que
Code :
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 :
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;
Delwyn 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 06h31.


 
 
 
 
Partenaires

Hébergement Web