:oops: Bonjour A tous
je vais essayer d’être clair 8-)
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 :aie: est de devoir faire 2 requêtes (donc 2 lectures du fichier XML)Code:
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>
(TMP_DIR est un directory ORACLE ==> Create Or Replace Directory TMP_DIR as '/tmp/')
cat Resp.sql
le résultat attendu est ok :aie: mais mon problème est que je lis 2 fois le fichierCode:
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;
(Sous Sqlplus)
Est il possible de faire une seule requete (Impliquant bien entendu 1 seule lecture du fichier) pour avoir le résultat suivantCode:
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 aideCode:
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
