IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[XML] [EXPAT] Parser XML avec PHP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2003
    Messages : 89
    Points : 47
    Points
    47
    Par défaut [XML] [EXPAT] Parser XML avec PHP
    Bonjour,
    J'ai un petit soucis avec mon Parser XML.
    Alors voila.

    Code XML : 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
    <librairie><festival>
            <festivalid>2556</festivalid>
            <nomfestival>DETOURS DE CHANT</nomfestival><lienfestival>
                LIEN
            </lienfestival>
            <datedebut>13-01-06</datedebut>
            <datefin>10-02-06</datefin>
            <sousgenre/>
            <resume>5ème édition</resume><texte>
                L'association (toulousaine) Voix Express fêtera sa 13ème saison. Pour l'occasion et en partenariat avec la Salle Nougaro de Toulouse, elle revient pour la 5ème fois avec son festival "Détours de chant !", un festival qui a pour objectif de jeter des ponts entre les prestations d'artistes professionnels et un travail de pratique amateur.
            </texte>
            <adresse>Diverses salles</adresse>
            <codepostal>31000</codepostal>
            <ville>Toulouse</ville>
        </festival>
    </librairie>

    Dans le code ci-dessus j'arrive à faire ressortir toutes mes infos sauf 2: <lienfestival> et <texte>.
    Il semblerait que le problème soit dû au fait qu'il y ait un retour à la ligne.

    Savez vous comment contourner ce problème ?

    PS: mon code PHP faisant une centaine je ne pourrais pas tout mettre sur ce post.

    Merci d'avance à tous 8)

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    tu utilise quoi ?
    un parseur sax, dom, simple_xml ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Membre du Club
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2003
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    Je ne saurais pas te dire lequel exactement, je l'ai trouvé sur un site web.
    Je te donne un morceau de code, ça t'aidera peut etre.
    Merci

    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
    26
    // Création du parseur XML
    $parseurXML = xml_parser_create();
     
    // Je précise le nom des fonctions à appeler
    // lorsque des balises ouvrantes ou fermantes sont rencontrées
    xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante", "fonctionBaliseFermante");
     
    // Je précise le nom de la fonction à appeler
    // lorsque du texte est rencontré
    xml_set_character_data_handler($parseurXML, "fonctionTexte");
     
    // Ouverture du fichier
    $fp = fopen($fichier, "r");
     
    if (!$fp) die("Impossible d'ouvrir le fichier XML");
     
    // Lecture ligne par ligne
    while ( $ligneXML = fgets($fp, 4096)) {
    	// Analyse de la ligne
    	// REM: feof($fp) retourne TRUE s'il s'agit de la dernière
    	// ligne du fichier.
    	xml_parse($parseurXML, $ligneXML, feof($fp)) or die("Erreur XML");
    }
     
    xml_parser_free($parseurXML);
    fclose($fp);

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    c est un parseur sax qui te notifie des qu il rencontre des elements et des chaines

    montre nous ta "fonction texte"
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  5. #5
    Membre du Club
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2003
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    Voili voilou

    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
    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
    58
    59
    60
    function fonctionTexte($parseur, $texte) {
    	global $derniereBaliseRencontree;
    	global $titre;
    	global $lien;
    	global $datedebut;
    	global $datefin;
    	global $resume;
    	global $texteconcert;
    	global $adresse;
    	global $codepostal;
    	global $ville;
    	global $sousgenre;
    	global $festivalid;
     
    	switch ($derniereBaliseRencontree) {
    		case "NOMFESTIVAL":
    			$titre = $texte;
    			break;
     
    		case "LIENFESTIVAL":
    			$lien = $texte;
    			break;
     
    		case "DATEDEBUT":
    			$datedebut = $texte;
    			break;
     
    		case "DATEFIN":
    			$datefin = $texte;
    			break;
     
    		case "RESUME":
    			$resume = $texte;
    			break;
     
    		case "TEXTE":
    			$texteconcert = $texte;
    			break;
     
    		case "ADRESSE":
    			$adresse = $texte;
    			break;
     
    		case "CODEPOSTAL":
    			$codepostal = $texte;
    			break;
     
    		case "VILLE":
    			$ville = $texte;
    			break;
     
    		case "SOUSGENRE":
    			$sousgenre = $texte;
    			break;
     
    		case "FESTIVALID":
    			$festivalid = $texte;
    			break;
    	}       
    }

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    et si tu fais un var_dump de $texte avant le switch ? il le trouve ou pas ton texte ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  7. #7
    Membre du Club
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2003
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    Oui il me sort bien l'ensemble des textes.

    C'est parce qu'il trouve pas la balise de fermeture à la fin du texte je pense.

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    c est juste qu il doit te l envouyer en plusieurs appels, tu devrais mettre un .= au lieu du = et remettre a "" dans ta methode qui gère le endElement
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Membre du Club
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2003
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    Et dire que c'était juste ça 8)

    Un grand merci à toi Siddh

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Drupal] Parser XML avec PHP pour générer du JS
    Par hitmax dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 17
    Dernier message: 15/06/2011, 15h27
  2. [MySQL] Parser un noeud XML avec PHP
    Par Rony Rauzduel dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/01/2010, 11h20
  3. [XML] parser un fichier xml avec php pour refaire un xml.
    Par steve3000 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 02/10/2008, 10h22
  4. [XML] [EXPAT] Parser un fichier xml avec php
    Par Dargos dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 05/04/2006, 12h25
  5. [XSLT] Utilisation de XML avec PHP dans le cadre d'un site
    Par nicolas66 dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 06/11/2005, 22h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo