XML : Lecture sélective en php

Fermé
Elipsis38 Messages postés 85 Date d'inscription vendredi 16 octobre 2009 Statut Membre Dernière intervention 26 janvier 2016 - 27 août 2010 à 21:55
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 28 août 2010 à 18:45
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 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
28 août 2010 à 18:45
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