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] Recupérer le contenu d'une balise XML en PHP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut [XML] Recupérer le contenu d'une balise XML en PHP
    Bonjour,

    J'ai un souci en utilisant le perseur XML de PHP.

    Imaginons que j'ai un fichier XML qui ressemble à ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <1>
     <2>
      <3>blibli</3>
      <4>blabla</4>
     </2>
    </1>
    Je souhaiterais, lorsque j'arrive dans la balise <2>, recupérer le contenu comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     <3>blibli</3>
     <4>blabla</4>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $fichier = fopen('fichier.xml','r'); 
    $parser = xml_parser_create();
    xml_set_object ($parser, $this);
    xml_set_element_handler($parser, "StartElement", "EndElement");
    xml_set_character_data_handler($parser, "GetData");
    while ($data = fread($fichier, 4096)) 
    {
    	if (!xml_parse($parser, $data, feof($fichier))) 
    		die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser)));
    }
    xml_parser_free($parser);
    fclose($fichier);
    pour récupérer les données, j'ai essayer ca (la variable $currentElement corremond au nom de la balise que j'ai récupérer dans StartElement):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function GetData($parser, $data)
    {
    	switch ($currentElement)
    	{
    		case '2' : echo $data; break;
    	}
    }
    Dans ce cas, $data est vide... Y a t'il y moyen d'obtenir ce que je veux avec ce genre de méthode ?
    J'aime pas les épinards... Mais alors pas du tout

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 043
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 043
    Points : 8 075
    Points
    8 075
    Billets dans le blog
    17
    Par défaut
    Ne peux-tu pas utiliser SimpleXML ou DOM ? Ce serait bcp plus simple à réaliser.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Bon... j'ai bidouillé mais j'ai fini par obtenir ce que je voulais :

    Plutot que de lire le fichier à l'arrache, maintant je le prédécoupe dans un buffer qui englobe le contenu de ma balise 2, que j'envois ensuite au parser.

    Evidemment, cette solution ne conviendrait pas à tous le monde vu que je ne parse pas tous le fichier (dans mon cas je n'en ai pas besoin). Mais pour moi ca fonctionne.

    Pour la bibliotheque SimpleXML ou DOM, j'avoue ne pas avoir regarder et ne pas savoir si ca peux s'installer sur mon serveur non plus. Je regarderais celà plus tard quand j'aurais un peu de temps a dépenser la dedan (ce qui est rare)
    J'aime pas les épinards... Mais alors pas du tout

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/07/2015, 15h24
  2. [SimpleXML] Récupérer contenu d'une balise XML contenant du HTML
    Par samichon dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 24/08/2007, 09h36
  3. [AJAX] récupérer contenu d'une balise xml
    Par Braillane dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/06/2007, 09h08
  4. Réponses: 4
    Dernier message: 31/07/2006, 10h31
  5. [xsl] mauvaise interprétation du contenu d'une balise XML
    Par Cédric B. dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/01/2006, 13h59

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