XMLreader : comment sortir les résultats valeur par valeur

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

max6
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 168
Inscription: Dim Mai 18, 2003 1:37

XMLreader : comment sortir les résultats valeur par valeur

Message le Ven Mar 30, 2007 12:43

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 :

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
Modérateur
 
Messages: 13848
Inscription: Mar Déc 23, 2003 9:04

Message le Ven Mar 30, 2007 12:53

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é ?

max6
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 168
Inscription: Dim Mai 18, 2003 1:37

Message le Ven Mar 30, 2007 13:27

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
Dernière édition par max6 le Ven Mar 30, 2007 13:35, édité 1 fois.


e-kiwi
Modérateur
Modérateur
 
Messages: 13848
Inscription: Mar Déc 23, 2003 9:04

Message le Ven Mar 30, 2007 13:32

je suppose que le nombre de lignes peut changer d'un enregistrement à un autre (ex : description sur plusieurs lignes) ?

max6
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 168
Inscription: Dim Mai 18, 2003 1:37

Message le Ven Mar 30, 2007 13:38

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 .

max6
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 168
Inscription: Dim Mai 18, 2003 1:37

Message le Ven Mar 30, 2007 15:52

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)


MagicYoyo
WRInaute accro
WRInaute accro
 
Messages: 2533
Inscription: Lun Mai 24, 2004 15:33

Message le Ven Mar 30, 2007 16:04

J'ai dans l'idée que la capacité de traitement d'un poste de travail ne permettra pas de parser un fichier de 500Mo.

max6
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 168
Inscription: Dim Mai 18, 2003 1:37

Message le Ven Mar 30, 2007 16:16

Apperemment certains y arrivent , dailleurs ceux qui me fournissent le flux le traite comme ca avec simplexml donc c'est bien que c'est possible mais comment ...


julienr
WRInaute passionné
WRInaute passionné
 
Messages: 866
Inscription: Mar Aoû 05, 2003 14:49

Message le Ven Mar 30, 2007 20:32

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
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;
      }
   }


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Toolbar, Google Website Optimizer



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités