XMLreader : comment sortir les résultats valeur par valeur
9 messages
• Page 1 sur 1
- max6
- WRInaute discret

- Messages: 168
- Inscription: 18 Mai 2003
XMLreader : comment sortir les résultats valeur par valeur
Bonjour à tous
Comme bien souvent , je fais appel aux compétences des membres de webrankinfo qui m'aident a chaque fois beaucoup dans la résolution de mes soucis .
Alors voila je traite un gros flux xml avec XMLreader , pour tout ce qui est lecture ca fonctionne parfaitement .
Ceci dit j'aimerai récupérer valeur par valeur en mettant chaque valeur dans une variable et ainsi inserer tout ca dans ma base de données mais la je sèche j'ai essayé 36 trucs et je suis arrivé a rien .
Voici le code de lecture qui fonctionne a merveille mais qui m'affiche les résutlats en 1 bloc :
Noton que le "type==3" est le noeud numéro 3 qui contient ce qui m'interesse pour l'inserer dans ma base .
Mais en faisant un if($type==3) ben forcement ca me renvoi dans la variable $valeur l'intégralité d'un enregistrement et il faut dispacher cet enregistrement .
La valeur me renvoie ca :
Et donc chaque ligne doit valoir une variable , par exemple la premiere ligne "1088860" doit aller dans une variable qu'on appelera ID et ainsi de suite pour les autres lignes .
Avez une solution ?
Merci
Max
Comme bien souvent , je fais appel aux compétences des membres de webrankinfo qui m'aident a chaque fois beaucoup dans la résolution de mes soucis .
Alors voila je traite un gros flux xml avec XMLreader , pour tout ce qui est lecture ca fonctionne parfaitement .
Ceci dit j'aimerai récupérer valeur par valeur en mettant chaque valeur dans une variable et ainsi inserer tout ca dans ma base de données mais la je sèche j'ai essayé 36 trucs et je suis arrivé a rien .
Voici le code de lecture qui fonctionne a merveille mais qui m'affiche les résutlats en 1 bloc :
- Code: Tout sélectionner
<?php
$xmlReader = new XMLReader();
$xmlReader->open('wmt_sejours.xml');
echo '<sejour>';
while ($xmlReader->read())
{
$nom = utf8_decode($xmlReader->name);
$valeur = utf8_decode($xmlReader->value);
$type = utf8_decode($xmlReader->nodeType);
if ($type==3)
{
echo "$valeur<br>";
}
}
echo '</sejour>';
$xmlReader->close();
?>
Noton que le "type==3" est le noeud numéro 3 qui contient ce qui m'interesse pour l'inserer dans ma base .
Mais en faisant un if($type==3) ben forcement ca me renvoi dans la variable $valeur l'intégralité d'un enregistrement et il faut dispacher cet enregistrement .
La valeur me renvoie ca :
- Code: Tout sélectionner
1088860
Séjour
Tunisie
Houmt Souk
1299
Hotel Sun Club 3*
3
125216
Pension complète / all inclusive
TN
8J/7N - AI SUN CLUB 3*+CM4J
Départ de MARSEILLE - MARSEILLE - DJERBA A/R - VOLS+HOTEL 3*+TOUT INCLUS+CURE
539
1 semaine environ
Marseille
MRS
DESCRIPTION ....
Et donc chaque ligne doit valoir une variable , par exemple la premiere ligne "1088860" doit aller dans une variable qu'on appelera ID et ainsi de suite pour les autres lignes .
Avez une solution ?
Merci
Max
-

e-kiwi - Modérateur

- Messages: 15618
- Inscription: 23 Déc 2003
tiens, j'ai fait une moulinette d import / export de BDD dans ce style, par contre le fichier que je génère a plutot cette forme :
enregistrement
champ1_de_ma_table
valeur
champ2_de_ma_table
valeur valeur
valeur valeur valeur
valeur
champ3_de_ma_table
...
enregistrement
champ1_de_ma_table
valeur
champ2_de_ma_table
valeur valeur
valeur valeur valeur
valeur
champ3_de_ma_table
...
le fichier que tu reçois ne peut pas être modifié ?
enregistrement
champ1_de_ma_table
valeur
champ2_de_ma_table
valeur valeur
valeur valeur valeur
valeur
champ3_de_ma_table
...
enregistrement
champ1_de_ma_table
valeur
champ2_de_ma_table
valeur valeur
valeur valeur valeur
valeur
champ3_de_ma_table
...
le fichier que tu reçois ne peut pas être modifié ?
- max6
- WRInaute discret

- Messages: 168
- Inscription: 18 Mai 2003
Et non , en plus il fait 500Mo lol
La mimolette dont tu parles je l'ai essayé avec des switch case mais rien a faire ...
Dois falloir trouver le jeu de boucle adequate
Moulinette pardon
La mimolette dont tu parles je l'ai essayé avec des switch case mais rien a faire ...
Dois falloir trouver le jeu de boucle adequate
Moulinette pardon
Dernière édition par max6 le Ven Mar 30, 2007 13:35, édité 1 fois.
- max6
- WRInaute discret

- Messages: 168
- Inscription: 18 Mai 2003
Oui tout a fait
Surout que les description sont ENORME .
Et que avant d'inserer quoi que ce soit dans ma base , je dois tdabbord faire plusieurs select/update et ensuite inserer .
En fait j'ai utilisé simplexml mais rien a faire le fichier est bien trop gros alors je me suis tourné vers ce lecteur .
Il faut impérativement que j'arrive a tirer de ce lecteur des variables pour chaque champs .
Surout que les description sont ENORME .
Et que avant d'inserer quoi que ce soit dans ma base , je dois tdabbord faire plusieurs select/update et ensuite inserer .
En fait j'ai utilisé simplexml mais rien a faire le fichier est bien trop gros alors je me suis tourné vers ce lecteur .
Il faut impérativement que j'arrive a tirer de ce lecteur des variables pour chaque champs .
- max6
- WRInaute discret

- Messages: 168
- Inscription: 18 Mai 2003
Je galere ca marche vraiment pas et les résultats attendus c'et vraiment pas ca .
Au passage qu'est ce qui pourrait faire bloquer SImplexml sur mon serveur pour la lecture d'un gros flux ? (parcque c quand meme plus simple comme lecteur)
Au passage qu'est ce qui pourrait faire bloquer SImplexml sur mon serveur pour la lecture d'un gros flux ? (parcque c quand meme plus simple comme lecteur)
-

julienr - WRInaute impliqué

- Messages: 913
- Inscription: 5 Aoû 2003
salut,
j'ai un bout de code en XMLReader si ca peux te donner des idées, celui-ci parse un fichier xml déjà costaud
j'ai un bout de code en XMLReader si ca peux te donner des idées, celui-ci parse un fichier xml déjà costaud
- Code: Tout sélectionner
$reader = new XMLReader();
$reader->open( $fichier );
while( $reader->read() ) {
switch ($reader->nodeType) {
case (XMLREADER::ELEMENT):
switch( $reader->localName ) {
case "CATALOGUE" :
break;
case "BOUTIQUE" :
break;
case "RAYON" :
$reader->getAttribute( "nom" );
break;
case "REFERENCE":
$reader->read();
$code = $reader->value;
break;
case "DESIGNATION" :
$reader->read();
break;
case "DESCRIPTION" :
$reader->read();
break;
case "MARQUE" :
$reader->read();
break;
case "PRIX" :
$reader->read();
break;
}
break;
CASE (XMLREADER::END_ELEMENT) :
if( $reader->localName == "PRODUIT" ) {
}
break;
}
}
9 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
Consultez la description détaillée des produits ou services de Google suivants : Google Toolbar
- Trouver la position de son site dans Google
Cet outil vous permet de vérifier si une ou plusieurs page(s) de votre site arrive(nt) dans les premiers résultats de Google, pour certains mots-clés recherchés. - Trouver la position de son site dans Yahoo
Cet outil vous permet de vérifier si une ou plusieurs page(s) de votre site arrive(nt) dans les premiers résultats de Yahoo, pour certains mots-clés recherchés. - Analyse de positionnement sur les data centers de Google
Cet outil vous permet d'afficher sur une seule page les résultats Google effectués sur de nombreux data centers (centres de données).
Qui est en ligne
Utilisateurs parcourant ce forum: antoineBM, ISFR, Koxin-L.fr et 1 invité

