voilà, j'ai un flux xml qui fait plusieurs 100Mo je ne connais pas la structure exacte.
Je veux pouvoir parcourir l'ensemble des champs à partir de produit.
1/Je ne connais le niveau d'imbrication ==> premier problème de mon code suivant car je ne reste qu'à un niveau en dessous de produit.
2/je n'arrive pas à afficher le contenu du champ
j'ai essayé différente façon, différentes recherche google.
avec nodevalue, value, ...
Mais dans le pire des cas je n'ai plus aucun affichage et au mieux il reste comme celui en cours sans l'ajout de ce point.
Avez-vous une idée ou solution.
J'utilise xml reader et simplexml pour ne pas surcharger le traitement du flux qui se fait quotidiennement et dont je ne connais la taille et la structure.
Merci
prod.xml
analyse.php
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<?xml version="1.0" encoding="iso-8859-1" ?> <disponibilite> <produit> <elements_tarifaire> <prix>470.22</prix> <prix_ttc>471.22</prix_ttc> <prix_hors_taxe>184</prix_hors_taxe> <code_monetaire>EUR</code_monetaire> <marchand>W4752</marchand> </elements_tarifaire> <detail_produit> </detail_produit> </produit> <produit> <elements_tarifaire> <prix>100.00</prix> <prix_ttc>1000.00</prix_ttc> <prix_hors_taxe>100.00</prix_hors_taxe> <code_monetaire>EUR</code_monetaire> <marchand>K100</marchand> </elements_tarifaire> </produit> </disponibilite>
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 <?php $xml = new XMLReader(); $xml->open("prod.xml"); while($xml->read()){ if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == "produit") { $sejour = $xml->expand(); $sejour = new SimpleXMLElement("<produit>".$xml->readInnerXML()."</produit>"); foreach ($sejour->children() as $child ) { echo $child->getName() . " = "; echo "<br>"; } echo "<BR>"; } } ?>
Partager