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] parser un fichier xml avec simplexml


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut [XML] parser un fichier xml avec simplexml
    Bonjour, je souhaite retourner tous les éléments d'un fichier xml et les afficher d'une manière structuré.
    J'ai tenter plusieurs chose pour arriver à mes fins mais sans succès.
    Je coince sur l'itération d'un élément dans un noeud.
    J'ai d'abord essayer avec xmlreader + simplexml :
    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
     
    $xml->open($pathxml, "UTF-8");
    		while($xml->read()){
    			if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == "authors") {
    				$v = $xml->expand();
    				$v = new SimpleXMLElement('<authors>'.$xml->readInnerXML().'</authors>');
    				$r = '<table class="table-plugin-author">
    					<thead>
    						<tr style="padding:3px;" class="ui-widget ui-widget-header">
    							<th>Author</th>
    							<th>Website</th>
    						</tr>
    					</thead>
    					<tbody>';
    				foreach($v->author as $row){
    					$r.= '<tr>';
    					$r.= '<td class="medium-cell">'.$row->name.'</td>';
    					$r .= '<td><ul>';
    					$t = '';
    					foreach($row->link as $link){
    						$t .= '<li>'.$link->url.'</li>';
    					}
    					$r .= $t;
    					$r.='</ul></td>';
    					$r.= '</tr>';
    				}
    				$r.='</tbody></table>';
    				return $r;
    			}
    		}
    Ceci ne passe pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($row->link as $link){
    	$t .= '<li>'.$link->url.'</li>';
    }
    J'ai alors tenter uniquement avec simplexml :
    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
     
    $xml = simplexml_load_file($pathxml); 
    		$r = '<table class="table-plugin-author">
    					<thead>
    						<tr style="padding:3px;" class="ui-widget ui-widget-header">
    							<th>Author</th>
    							<th>Website</th>
    						</tr>
    					</thead>
    					<tbody>';
    		foreach($xml->author as $row) {
    			$r.= '<tr>';
    			$r.= '<td class="medium-cell">'.$row->name.'</td>';
    			$r .= '<td><ul>';
    			$t = '';
    			foreach($row->link as $link){
    				$t .= '<li>'.$link->url.'</li>';
    			}
    			$r .= $t;
    			$r.='</ul></td>';
    			$r.= '</tr>';
    		}
    		$r.='</tbody></table>';
    		return $r;
    Idem j'ai pas ce que je veux mon fichier xml ressemble à ceci :

    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
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <config>
    	<acl>
    		<admin>
    			<authorized>
    				<allow_access>*</allow_access>
    			</authorized>
    			<infos>
    				<authors>
    					<author>
    						<name>mon super nom</name>
    						<link>
    							<url>http://www.test.com</url>
    							<url>http://www.test.be</url>
    						</link>
    					</author>
    					<author>
    						<name>Bobby</name>
    						<link>
    							<url>http://www.montruc.be</url>
    						</link>
    					</author>
    				</authors>
    			</infos>
    		</admin>
    	</acl>
    </config>
    Je m'y prend probablement comme un manche
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    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 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($xml->author as $row) {
    Là tu tentes d'itérer sur les éléments <author> de la racine <config>.

    Il faudrait que tu fasses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ( $xml->acl->admin->infos->authors->author as $row ) {
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/09/2014, 16h45
  2. parser un fichier HTML avec JAVA
    Par ouinih dans le forum EDI et Outils pour Java
    Réponses: 2
    Dernier message: 09/02/2009, 10h33
  3. Parser un fichier HTML avec HtmlDocument
    Par Seth77 dans le forum C#
    Réponses: 2
    Dernier message: 13/08/2008, 07h52
  4. [SimpleXML] recuperer données xml avec simplexml
    Par astrolane dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 29/08/2007, 14h39
  5. Réponses: 3
    Dernier message: 10/05/2007, 14h12

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