Bonjour,

N'étant de loin pas un adepte du plsql, je me tourne vers vous afin de solliciter un peu d'aide. Mon problème est le suivant. Je parse un fichier xml et selon des tests que je fais, il me faut mettre à jour un attribut xml de ce fichier.

Voici le fichier xml que je parse :

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
<?xml version="1.0" encoding="ISO-8859-1"?>
<ETRANSACTION xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="TransactionMessage" filename="TRANSACTION_5000.xml">
  <POS id="21">
    <POSTRANSACTION action="add">
      <POSTRANSACTIONDATE>17.06.2008 16.25.00</POSTRANSACTIONDATE>
      <TOTALAMOUNT>0.1</TOTALAMOUNT>
      <POSTRANSACTIONDETAIL>
        <PRODUCTID>5095</PRODUCTID>
        <QUANTITY>1</QUANTITY>
        <AMOUNT>0.1</AMOUNT>
      </POSTRANSACTIONDETAIL>
      <PAYMENT>
        <AMOUNT>0.1</AMOUNT>
        <ACCOUNTID/>
        <CARDID>6D26B057</CARDID>
        <PERSONID>401</PERSONID>
        <PAYMENTMODEID>2</PAYMENTMODEID>
        <CURRENCYID>1</CURRENCYID>
      </PAYMENT>
    </POSTRANSACTION>
  </POS>
  <EXTERNALINFO>
    <EXTERNALINFOTYPE>NEWACCOUNTBALANCE</EXTERNALINFOTYPE>
    <EXTERNALINFOVALUE>partie que je souhaite mettre à jour</EXTERNALINFOVALUE>
  </EXTERNALINFO>
  <EXTERNALINFO>
    <EXTERNALINFOTYPE>TRANSACTIONNUMBER</EXTERNALINFOTYPE>
    <EXTERNALINFOVALUE>6057</EXTERNALINFOVALUE>
  </EXTERNALINFO>
</ETRANSACTION>
Je dois mettre à jour la partie en rouge dans l'exemple ci-dessous.

Au niveau de mon code, je dois faire la mise à jour dans une procédure que j'ai à disposition et pour laquelle je ne peux pas changer la signature.

Voici le début de la procédure que j'ai à disposition et le code que j'ai tenté de faire fonctionner

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
      PROCEDURE updateexternalinfo (
         peconfiguration           IN       tconfiguration,
         pnodeexternalinfotype     IN OUT   DBMS_XMLDOM.domnode,
         pnodeexternalinfotypev    IN       DBMS_XMLDOM.domnode,
         pnodeexternalinfovalue    IN OUT   DBMS_XMLDOM.domnode,
         pnodeexternalinfovaluev   IN       DBMS_XMLDOM.domnode
      )
      AS
         ldocument          DBMS_XMLDOM.domdocument;
         ldomtext           DBMS_XMLDOM.domtext;
         ltempnode          DBMS_XMLDOM.domnode;
      BEGIN
          ldocument :=DBMS_XMLDOM.makedocument(pnodeexternalinfovalue);
          ldomtext :=DBMS_XMLDOM.createtextnode(ldocument,'0');
          ltempnode :=DBMS_XMLDOM.makenode(ldomtext);
          nodeexternalinfovalue:=
                 DBMS_XMLDOM.appendchild(pnodeexternalinfovalue,ltempnode);
A noter que ce code fonctionnait bien quand j'étais sous oracle 9.2.0.8. Après être passé en 10G, j'ai l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
error ORA-31183: Node type element cannot be converted to desired type
Merci d'avance de votre aide. Je tourne en rond depuis un bon moment.

Bonne journée