Bonsoir,
Je parse un flux xml dans lequel je récupère les éléments ainsi que les attributs des éléments afin de les insérer dans une base de données mysql.
Le flux étant conséquent (10 000 produits environs), au fur et a mesure que je parse mon flux je mets les valeurs dans un array pour pouvoir envoyer a la fin du script tout l'array dans ma BDD.
Voici mon flux, mon script et le resultat (qui me pose probléme), raccourci au maximum pour ne garder que le problème.
Le flux
Le script:
Affichage généré par le script:
Donc voila mon probléme.
Dans ce script je fais echo pour voir ce que contiennent mes variable et il m'affiche bien l'id et le number, donc OK
Ensuite je met tous cela dans un tableau et quand je regarde ce qu'il y a dans la tableau j'ai
SimpleXMLElement Object
(
[0] => 3712570687
)
alors que je ne veux que 3712570687.
Comment puis-je faire ?
J'ai essayé 2, 3 trucs sans succès et qui font usine a gaz, peut-être dû à la fatigue.
Merci de votre aide.
Modifié par yann123 (27 Nov 2008 - 23:53)
Je parse un flux xml dans lequel je récupère les éléments ainsi que les attributs des éléments afin de les insérer dans une base de données mysql.
Le flux étant conséquent (10 000 produits environs), au fur et a mesure que je parse mon flux je mets les valeurs dans un array pour pouvoir envoyer a la fin du script tout l'array dans ma BDD.
Voici mon flux, mon script et le resultat (qui me pose probléme), raccourci au maximum pour ne garder que le problème.
Le flux
<?xml version="1.0" encoding="utf-8"?><catalogue><product id="3712570687" number="3009703025074645"></product><product id="3712570689" number="3009703027074015"></product></catalogue>
Le script:
<?php
$nouveau_art = array(); // creation d'un tableau
$catalogue = simplexml_load_file('http://www.mon-flux.xml'); // Je converti mon fichier xml en objet.
$i=0; //S'incrémente de 1 à chaque produit du flux.
foreach($catalogue->product as $product) // Je parse le flux.
{
foreach($catalogue->product[$i]->attributes() as $a => $b)
{
${$a} = $b; // la variable $id contient l'id et $number le number_produit
}
$i=$i+1; // Je passe au produit suivant.
echo $id . '<br />'; // Un echo pour voir ce que contient $id
echo $number . '<br />'; // Un echo pour voir ce que contient $number
$nouveau_art []= array ('id_produit' => $id, 'number_produit' => $number); // Je mets les valeurs dans un tableau.
} // Fin du foreach parsage du flux.
// J'affiche le tableau pour voir ce qu'il contient.
echo '<pre>';
print_r($nouveau_art);
echo '</pre>';
?>
Affichage généré par le script:
a écrit :
3712570687
3009703025074645
3712570689
3009703027074015
Array
(
[0] => Array
(
[id_produit] => SimpleXMLElement Object
(
[0] => 3712570687
)
[number_produit] => SimpleXMLElement Object
(
[0] => 3009703025074645
)
)
[1] => Array
(
[id_produit] => SimpleXMLElement Object
(
[0] => 3712570689
)
[number_produit] => SimpleXMLElement Object
(
[0] => 3009703027074015
)
)
)
Donc voila mon probléme.
Dans ce script je fais echo pour voir ce que contiennent mes variable et il m'affiche bien l'id et le number, donc OK
Ensuite je met tous cela dans un tableau et quand je regarde ce qu'il y a dans la tableau j'ai
SimpleXMLElement Object
(
[0] => 3712570687
)
alors que je ne veux que 3712570687.
Comment puis-je faire ?
J'ai essayé 2, 3 trucs sans succès et qui font usine a gaz, peut-être dû à la fatigue.
Merci de votre aide.
Modifié par yann123 (27 Nov 2008 - 23:53)