Affiche contenu fichier xml en php
Résolu
Flatbeat
Messages postés
35
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
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.
merci d'avance !
<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
1 réponse
-
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>"; } }-
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 ^^
-