Rechercher : dans
Par :

Affiche contenu fichier xml en php

Dernière réponse le 26 mai 2009 à 11:21:11 Flatbeat, le 26 mai 2009 à 10:16:18 
 Signaler ce message aux modérateurs

Salut, ma question est toute bête mais ça m'énerve, j'ai un fichier xml de ce type

<personne>
<nom>george</nom>
<enfant>bob</enfant>
</personne>
<personne>
<nom>sylvain</nom>
<enfant>luc</enfant>
<enfant>alphonse</enfant>
</personne>

Je veux afficher une liste des noms et pour chaque nom, afficher une liste avec les enfants (il peut y en avoir aucun, un ou plusieurs) en php. J'ai fait cela mais je n'arrive pas a afficher les enfants.

$dom = new DomDocument;
$dom->load("fichier.xml");

$personne = $dom->getElementsByTagName('personne');
$i=0;

echo "<ul>";
foreach($personne as $personne_nom)
 {
        echo "<li>";
	echo personne_nom->firstChild->nodeValue;
        echo "</li>";
}
echo "</ul>";


merci d'avance !
Configuration: Windows XP
Firefox 3.0.10

Meilleures réponses pour « affiche contenu fichier xml en php » dans :
[PHP] Lister le contenu d'un répertoire VoirGrâce à PHP, il est possible d'afficher le contenu d'un répertoire et de ses sous-répertoires. Voici ci-dessous une fonction permettant de parcourir récursivement les répertoires et sous-répertoires et d'en afficher les fichiers : function...
Afficher les extensions et les fichiers cachés sous Windows VoirPour afficher les extensions Solution simple Solution avec le registre Pour afficher les fichiers et les dossiers cachés Pour afficher les fichiers et les dossiers système Pourquoi afficher les extensions ? Lorsque vous ne voyez...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

Flatbeat, le 26 mai 2009 à 10:50:38

Je réponds à moi même vu que j'ai trouvé la réponse :). J'ai utilisé simpleXML


$fichierxml = simplexml_load_file('fichier.xml'); 
foreach($fichierxml->personne as $personne) 
{
    echo "<b>$personne->nom</b><br>";
    
    foreach($personne->enfant as $enfant) 
    {
    	echo "$enfant<br>";
    }
}

Répondre à Flatbeat

2

 ahmet0851, le 26 mai 2009 à 11:21:11

Salut !

J'étais entrain de le faire donc je te répond quand même ^^

Le problème déjà est ta structure. un fichier XML correct serait comme ça

----------fcihier.xml--------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE personnes SYSTEM "fichier.dtd">
<personnes>
	<personne>
		<nom>Nom1</nom>
		<enfants>
			<enfant>enfant1</enfant>
		</enfants>
	</personne>
	<personne>
		<nom>Nom2</nom>
		<enfants>
			<enfant>enfant1</enfant>
			<enfant>enfant2</enfant>
		</enfants>
	</personne> 
</personnes>

----------fichier.dtd--------------
<!ELEMENT personnes (personne*)>
<!ELEMENT personne (nom, enfants)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT enfants (enfant*)>
<!ELEMENT enfant (#PCDATA)>


Ensuite il faut récupérer élément par élément, une manière plus propre et plus ordonnée.

----------fichier.php-----------
<?php

$dom = new DomDocument;
$dom->load("fichier.xml");

$racine = $dom->documentElement;
$personne = $racine->getElementsByTagName('personne');


if(@$dom->validate())
{
	foreach($personne as $contenu)
	{
		echo "<ul>";

		$nom = $contenu->getElementsByTagName('nom');
		echo "<li>";
			echo $nom->item(0)->firstChild->nodeValue;
		echo "</li>";

		$enfants = $contenu->getElementsByTagName('enfants');
		$enfant = $enfants->item(0)->getElementsByTagName('enfant');

		foreach($enfant as $value)
		{
			echo "<li>";
				echo $value->firstChild->nodeValue;
			echo "</li>";
		 }
		echo "</ul>";	
	}
	
}
else $dom->validate();



Bon courage ^^
Si quelqu'un vous aide un merci et un résolu (petite case à droite de votre 1er message) !! 

Répondre à ahmet0851
Collection CommentÇaMarche.net