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