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 :
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 
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 :
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
Partager