[SimpleXML] parcourir un fichier xml et extraire des élements pour traitement
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
Code:
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> |
Voici le script que j'ai tester :
Code:
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; |
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.
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 :cry: