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

Langage PHP Discussion :

Analyser plusieurs fichiers XML


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Analyser plusieurs fichiers XML
    Hello !

    J'ai le fichier config.xml :

    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
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    <xml>
    	<config serverurl="http://localhost/mon_site/" />
    	<univers1 x="0" y="0" z="0" xiti="'F','1','groupe::home'" swfaddress="groupe" title="Groupe" >
    		<planet  radius="1200" y="860" coefX="1" coefZ="1" startAngle="72" data="u1p1.xml" posContent="300" swfaddress="worldwide" >
    			<img src="Images/image.png"/>
    			<media src="Images/image.jpg"/>
    			<title><![CDATA[WORLDWIDE]]></title>
    			<flashURL><![CDATA[/groupe/worldwide/]]></flashURL>
    			<xiti><![CDATA['F','1','groupe::worldwide']]></xiti>
    		</planet>
     
    		<planet  radius="1200" y="500" coefX="1" coefZ="1" startAngle="30" data="u1p2.xml" posContent="0" swfaddress="ressources_humaines" >
    			<img src="Images/image.png"/>
    			<media src="Images/image.jpg"/>
    			<title><![CDATA[RESSOURCES HUMAINES]]></title>
    			<flashURL><![CDATA[/groupe/ressources_humaines/]]></flashURL>
    			<xiti><![CDATA['F','1','groupe::ressources_humaines']]></xiti>
    		</planet>
     
    ...
     
    <planet  radius="400" y="-340" coefX="1" coefZ="1" startAngle="190" data="u1p6.xml" posContent="300" swfaddress="campagnes" >
    			<img src="Images/image.png"/>
    			<media src="Images/image.jpg"/>
    			<title><![CDATA[CAMPAGNES]]></title>
    			<flashURL><![CDATA[/groupe/campagnes/]]></flashURL>
    			<xiti><![CDATA['F','1','groupe::campagnes']]></xiti>
    		</planet>
     
    	</univers1>
     
    	<univers2 x="0" y="0" z="18000" xiti="'F','2','agences::home'" swfaddress="agences" title="Agences" >
    		<planet radius="910" y="0" coefX="2" coefZ="1" startAngle="247" data="u2p1.xml" posContent="0" swfaddress="auditoire">
    			<img src="Images/image.png"/>
    			<title><![CDATA[\AUDITOIRE]]></title>
    			<flashURL><![CDATA[/agences/auditoire/]]></flashURL>
    			<xiti><![CDATA['F','1','agences::auditoire']]></xiti>
    		</planet>
     
    		<planet radius="910" y="0" coefX="2" coefZ="1" startAngle="67" data="u2p2.xml" posContent="0" swfaddress="excel">
    			<img src="Images/image.png"/>
    			<title><![CDATA[\EXCEL]]></title>
    			<flashURL><![CDATA[/agences/excel/]]></flashURL>
    			<xiti><![CDATA['F','1','agences::excel']]></xiti>
    		</planet>
     
    ...
     
    		<planet radius="910" y="0" coefX="2" coefZ="1" startAngle="330" data="u2p17.xml" posContent="0" swfaddress="else">
    			<img src="Images/image.png"/>
    			<title><![CDATA[\ELSE]]></title>
    			<flashURL><![CDATA[/agences/else/]]></flashURL>
    			<xiti><![CDATA['F','1','agences::else']]></xiti>
    		</planet>
     
    	</univers2>
     
    	<univers3 x="0" y="0" z="18800" xiti="'F','3','philosophie::home'" swfaddress="philosophie" title="Philosophie" >
    		<planet  radius="0" y="0" coefX="1" coefZ="1" startAngle="0" data="u3p1.xml" posContent="0" swfaddress="">
    			<img src="Images/image.jpg"/>
    			<title><![CDATA[1 minute]]></title>
    			<flashURL><![CDATA[/philosophie/1_minute/]]></flashURL>
    			<xiti><![CDATA['F','1','philosophie::1_minute']]></xiti>
    		</planet>
     
    	</univers3>
     
    	<satellite x="1000" y="100" z="800">
    		<media order="primary" src="Videos/video.flv" type="video"/>
    	</satellite>
     
    	<satellite x="700" y="0" z="19800">
    		<media order="primary" src="Videos/interview_bordas.flv" type="video"/>
    	</satellite>
     
    </xml>

    Ce fichier fait appel a d'autre fichier xml appeler de la manière suivante :
    <planet ... data="u1p1.xml" ... >

    Les fichier xml sont tous nommé ainsi : de u1p1.xml à uXpX.xml

    J'aimerai faire une fonction permettant de parser toutes les bablises title et texte.

    Ci-dessous mon premier fichier PHP, qui me donne uniquement les infos pour config.php :

    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
     
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
    		<title>Mon Site</title>
            <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        </head>
        <body>
    		<?php
        $fichier = "config.xml";
     
        function fonctionBaliseOuvrante($parseur, $nomBalise, $tableauAttributs)
        {
            global $derniereBaliseRencontree;
            $derniereBaliseRencontree = $nomBalise;
        }
     
        function fonctionBaliseFermante($parseur, $nomBalise)
        {
            global $derniereBaliseRencontree;
            $derniereBaliseRencontree = "";
        }
     
        function fonctionTexte($parseur, $texte)
        {
            global $derniereBaliseRencontree;
     
            switch ($derniereBaliseRencontree) {
                case "TITLE": 
                    echo $texte;
                    break;
                case "TEXTE":
                   echo "\"$texte\"<br />";
                   break;
            }         
        }
     
     
        $parseurXML = xml_parser_create();
     
     
        xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante"
                                           , "fonctionBaliseFermante");
     
        xml_set_character_data_handler($parseurXML, "fonctionTexte");
     
        $fp = fopen($fichier, "r");
        if (!$fp) die("Impossible d'ouvrir le fichier XML");
     
        while ( $ligneXML = fgets($fp, 1024)) {
            xml_parse($parseurXML, $ligneXML, feof($fp)) or
                die("Erreur XML");
        }
     
        xml_parser_free($parseurXML);
        fclose($fp);
    ?>
     
     
        </body>
    </html>
    Comment je pourrai améliorer mon code pour pouvoir parser tous les autres fichiers XML ?
    Pour rappel, je suis débutante en PHP :s

    Merci par avance ;-)
    +++

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Bonsoir,

    As-tu jeté un oeil à la libraire SimpleXML. Elle peut te simplifier pas mal la tâche.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse :-)
    Je viens de regarder la librairie SimpleXML. Je pense que SimpleXMLElement->children() ou SimpleXMLElement->attributes() pourrait convenir.
    Mais je ne sais pas trop comment les intégrer, car le fichier XML d'où je dois récupérer les infos, ne doit surtout pas être modifié :s

  4. #4
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    Pourquoi ne pas creer un autre fichier avec les infos recueillies qui t'intéresses?

Discussions similaires

  1. import de plusieurs fichiers XML dans Access 2003
    Par frdek dans le forum Access
    Réponses: 7
    Dernier message: 09/08/2008, 19h39
  2. [C#] creer un dataset a partir de plusieurs fichiers XML
    Par ager1912 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/05/2006, 18h17
  3. Réponses: 3
    Dernier message: 16/02/2006, 18h38
  4. [XSL]récupérer une valeur de plusieurs fichiers XML
    Par snoop dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 05/02/2006, 00h32
  5. Uilisation de plusieurs fichiers xml à la fois
    Par elacsap78 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 10/01/2006, 16h00

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