XML : Lecture sélective en php

Elipsis38 Messages postés 85 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir,

Je suis en train d'apprendre le xml, pour changer du mysql.
J'ai déja remarqué que l'on ne trouve pas autant de codes pour lire des données en xml que en php.
Bref.

J'ai le fichier liste.xml suivant:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<trackliste>

<piste numero="1">
Soggy Bottom Boys - I Am A Man Of Constant Sorrow-Oh Brother Where Art Thou Soundtrack
</piste>


<piste numero="2">
Rolling Stones - Brown Sugar
</piste>

</trackliste>


Mes questions sont les suivantes, et surement un peu basique ^^

Comment récupérer en php seulement la piste numero 1 ?
Et, pour plus tard, sera-t-il possible de compter le nombre d'entrées qu'il ya entre les balise <trackliste> ?

Merci de bien vouloir m'aider :)
A voir également:

1 réponse

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Salut.

« Je suis en train d'apprendre le xml, pour changer du mysql. »
XML ne doit pas remplacer une base de données dans n'importe quel cas.

« J'ai déja remarqué que l'on ne trouve pas autant de codes pour lire des données en xml que en php. »
Je n'ai pas très bien compris cette phrase.
Si tu veux dire qu'il y a plus de code pour lire des données codé en PHP qu'en XML : le XML ne sert pas à lire des données.
Si tu veux dire qu'il y a plus de code pour lire des données stockées en PHP qu'en XML : le PHP ne sert à pas à stocker des données.

Pour explorer un document XML à l'aide de PHP, tu peux utiliser DOM.
<?php

$dom = new DOMDocument();
$dom->load('fichier.xml');

$tracklist = $dom->getElementsByTagName('trackliste')->item(0);
$pistes = $tracklist->getElementsByTagName('piste');

$nbPistes = $pistes->length;
$premierePiste = null;
foreach($pistes as $piste) {
    $attributs = $piste->attributes;
    if($attributs->getNamedItem('numero')->nodeValue == "1") {
        $premierePiste = $piste;
    }
}

echo 'Nombre de pistes : '.$nbPistes.'<br/>';
echo 'Première piste : '.( ($premierePiste == null) ? 'Aucune' : $premierePiste->firstChild->nodeValue ).'<br/>';

?>
1