Bonjour A tous
je vais essayer d’être clair
j'ai le fichier XML suivant et j'essaye de traiter des infos qui ne sont pas sur le meme niveau hierarchique (ici le tag requestId avec les tags networkAccounId)
cat /tmp/Response.xml
et les 2 requêtes suivantes donne ce que je souhaite avoir , mais mon souci
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 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <batchNewResponse> <entry> <requestId>EN014383</requestId> <select>FixePhoneNumber,MobilePhoneNumber,EmailAdresse</select> <count>9</count> <nblines>7</nblines> </entry> <feed> <networkAccountId id="001234567">"+33025117528","",""</networkAccountId> <networkAccountId id="000123456">"","+33094063225","helene.dici@la.fr"</networkAccountId> <networkAccountId id="123456789">"+33098257276","",""</networkAccountId> <networkAccountId id="987654322">"","+33735633685","jossdela@gmal.com"</networkAccountId> <networkAccountId id="000001234">"+33000024957","",""</networkAccountId> <networkAccountId id="000897356">"+33783763117","+3246353440",""</networkAccountId> <networkAccountId id="8762543SD"></networkAccountId> <networkAccountId id="IdNo98376">"+33612600007","+33098235637",""</networkAccountId> <networkAccountId id="TestIdNo9">"","+33556736332",""</networkAccountId> <networkAccountId id="TestIdNo6"></networkAccountId> </feed> </batchNewResponse>est de devoir faire 2 requêtes (donc 2 lectures du fichier XML)
(TMP_DIR est un directory ORACLE ==> Create Or Replace Directory TMP_DIR as '/tmp/')
cat Resp.sql
le résultat attendu est ok
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 set pagesize 0 set heading off Set linesize 400 select x.* from XMLTable( '/batchNewResponse/entry' passing xmltype( bfilename('TMP_DIR','Response.xml'),nls_charset_id('Windows-1251') ) columns no_file varchar2(300) path 'requestId' ) x; select x.* from XMLTable( '/batchNewResponse/feed/networkAccountId' passing xmltype( bfilename('TMP_DIR','Response.xml'),nls_charset_id('Windows-1251') ) columns id varchar2(10) path '@id', info varchar2(300) path '.' ) x;mais mon problème est que je lis 2 fois le fichier
(Sous Sqlplus)
Est il possible de faire une seule requete (Impliquant bien entendu 1 seule lecture du fichier) pour avoir le résultat suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @Resp.sql EN014383 001234567 "+33025117528","","" 000123456 "","+33094063225","helene.dici@la.fr" 123456789 "+33098257276","","" 987654322 "","+33735633685","jossdela@gmal.com" 000001234 "+33000024957","","" 000897356 "+33783763117","+3246353440","" 8762543SD IdNo98376 "+33612600007","+33098235637","" TestIdNo9 "","+33556736332","" TestIdNo6
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 EN014383 001234567 "+33025117528","","" EN014383 000123456 "","+33094063225","helene.dici@la.fr" EN014383 123456789 "+33098257276","","" EN014383 987654322 "","+33735633685","jossdela@gmal.com" EN014383 000001234 "+33000024957","","" EN014383 000897356 "+33783763117","+3246353440","" EN014383 8762543SD EN014383 IdNo98376 "+33612600007","+33098235637","" EN014383 TestIdNo9 "","+33556736332","" EN014383 TestIdNo6
@Argoet
Partager