Bonjour, je rencontre quelques difficultés pour parcourir un fichier XML et effectuer durant le parcourt l’exclusion de doublon ainsi que l'identification du nœud courant.
En faites je dois lire un fichier xml local et analyser dans la base de données si les éléments existe pour ensuite les insérer (jusque la rien de compliqué)
LE problème c'est au moment de la lecture, je dois faire quelques travaux tel qu'éliminé les doublons ou encore identifié sur quel élément je me trouve.
Le fichier contient plusieurs agences ainsi que plusieurs propriétés dans chaque agences
Voici le script que j'ai tester :
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57 <monxml> <agency code="2AV02"> <codeagence>650</codeagence> <properties> <property id="10"> <propertyuuid>6C83FBAFBB23</propertyuuid> <location> <address1></address1> <address2></address2> <insee>75116</insee> <city><![CDATA[Paris 16e]]></city> <province><![CDATA[Paris]]></province> <postalcode>75016</postalcode> </location> </property> <property id="10"> <propertyuuid>6C83FBAFBB23</propertyuuid> <location> <address1></address1> <address2></address2> <insee>75116</insee> <city><![CDATA[Paris 16e]]></city> <province><![CDATA[Paris]]></province> <postalcode>75016</postalcode> </location> </property> <property id="15"> <propertyuuid>6CERTAFBB23</propertyuuid> <location> <address1></address1> <address2></address2> <insee>75116</insee> <city><![CDATA[Paris 8e]]></city> <province><![CDATA[Paris]]></province> <postalcode>75018</postalcode> </location> </property> </properties> </agency> <agency code="9AV05"> <codeagence>701</codeagence> <properties> <property id="A1041451"> <propertyuuid>6C83FYTRE23</propertyuuid> <location> <address1></address1> <address2></address2> <insee>75116</insee> <city><![CDATA[Paris 16e]]></city> <province><![CDATA[Paris]]></province> <postalcode>75016</postalcode> </location> </property> </properties> </agency> </monxml>
Forcément ici il me retourne les éléments de l'agence comportant le numéro 2AV02 mais c'est du dur, peut on identifier l'agence en cours de traitement et effectuer la deuxième boucle pour bien travailler sur les propriétés de cette agence et bien entendu supprimer les doublons de propriétés car de temps en temps j'ai deux identifiant les même qui ce suivent mais impossible de l'éjecter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $xml = new SimpleXMLElement('test.xml',0, TRUE); $t = ''; foreach ($xml->agency as $key){ if($key['code'] == '2AV02'){ $t.= 'agency : '.$key['code'].'<br />'.'codeagence: '.$key->codeagence.'<br /><h3>Propriétés</h3>'; foreach($xml->agency->properties->property as $prop){ //$t.= $prop['id'].'<br>'; $t .= $prop->propertyuuid.'<br>'; } } // } print $t;
Dois je me pencher sur SimpleXMLIterator pour savoir quel sera l'élément suivant pour l'éliminé du traitement ?
Le xml est très succinct ici mais en vérité il est énorme
Partager