Pré-requis

POO en PHP
API DOM

Voir aussi

XML Facile!

6.Le langage PHP

6.17.Parser un document XML

6.17.3.A partir de l'arbre DOM

6.17.3.1.Chargement de l'arbre DOM

L'analyse d'un flux XML à partir de son arbre DOM passe par l'instanciation d'un objet[c'est quoi?] DOMDocument. Une fois l'objet instancié, il est possible de charger un flux XML via la méthode
  • load() si le flux XML est dans un fichier (ou URL, etc.)
  • loadXML() si le document XML est passé sous forme de chaîne de caractères
  • loadHTMLFile() si le flux XML est dans un fichier qui contient en fait du code HTML (dans ce cas, le document source n'est pas nécessairement valide d'un point de vue XML et les corrections nécessaires sont alors apportées tant bien que mal)
  • loadHTML() si le document XML est passé sous forme de chaîne de caractères qui contient en fait du code HTML (dans ce cas, le document source n'est pas nécessairement valide d'un point de vue XML et les corrections nécessaires sont alors apportées tant bien que mal)
En cas d'erreur, ces fonctions "load" retourneront FALSE.
Autrement dit, parser un document XML avec DOM commence par quelque chose comme
<?php
$fichier = "monfichier.xml";
$dom = new DOMDocument();
if (!$dom->load($fichier)) {
    echo "Impossible de charger le fichier XML";
}
?>
ou
<?php
$xml = '<?xml version="1.0"?><racine>...</racine>';
$dom = new DOMDocument();
if (!$dom->loadXML($fichier)) {
    echo "Impossible de charger le fichier XML";
}
?>

6.17.3.2.Recherche d'une balise dans l'arbre DOM

Une fois l'arbre chargé, il est possible d'atteindre la ou les balises portant un nom donné via la méthode getElementsByTagName(). Cette méthode retourne alors une liste de noeuds sous forme d'un objet DOMNodeList. Cette objet propose, entre autres, les attributs et méthodes suivants:
  • length indiquant le nombre d'entrées dans la liste
  • item($nb) permettant d'accéder à l'entrée $nb (sachant que la première entrée a l'index 0)
Pour déterminer le nombre d'articles dans le flux RSS, il faut rechercher les balises <item>
<?php
$fichier = "http://www.phpfacile.com/exemples_live/fluxrss.rss";
$dom = new DOMDocument();
if (!$dom->load($fichier)) {
    die("Impossible de charger le fichier XML");
}

$itemList = $dom->getElementsByTagName("item");
echo "Il y a ".$itemList->length." articles dans le flux RSS";

?>
Ce qui donne
Il y a 3 articles dans le flux RSS

6.17.3.3.Données d'un noeud DOM

Le contenu textuel d'une balise peut être obtenu via l'attribut nodeValue d'un noeud (lorsque le noeud est de type "element" ce qui est le cas pour les noeuds retournés par getElementsByTagName()).
Ici vous pouvez apprendre :
1.Introduction
2.Installation de PHP
3.Exécuter un script PHP
4.Configuration et environnement d'exécution de PHP
5.L'environnement de développement
6.Le langage PHP
6.1.Introduction
6.2.Mon premier script
6.3.La syntaxe
6.4.Les boucles (for, while, foreach, do) en PHP
6.5.Les tableaux (array) en PHP
6.6.Les fonctions
6.7.Include
6.8.Programmation orientée objet
6.9.Les fonctions de manipulation de tableaux
6.10.Les dates
6.11.Fichiers et répertoires
6.12.Les paramètres d'entrée d'un script PHP
6.13.Utilisation de la librairie graphique
6.14.JpGraph pour tracer courbes et diagrammes
6.15.Utilisation de bases de données avec PHP
6.16.LDAP
6.17.Parser un document XML
6.17.1.Introduction
6.17.2.Parseur de type "SAX parser"
6.17.3.A partir de l'arbre DOM
6.17.3.1.Chargement de l'arbre DOM
6.17.3.2.Recherche d'une balise dans l'arbre DOM
6.17.3.3.Données d'un noeud DOM
6.17.3.4.Affichage du flux RSS
6.17.4.Transformer un document XML avec XSL
6.18.Génération de documents PDF en PHP
6.19.Envoyer un mail
6.20.Créer un webmail avec IMAP
6.21.Droits utilisateurs: chmod 777
6.22.Localization (l10n) et Traduction
7.PHP pour le web
8.Internationalisation (i18n) et encodage en PHP
9.Créer un fichier de logs/traces
10.Déboguer une application PHP
11.Programmer en PHP en toute sécurité
12.Bibilothèque PEAR
13.Zend Framework 2 et 3
14.Installation de Zend Framework 2
15.Joomla
16.Composer
17.PHPUnit
18.PHPDocumentor
19.Mesure de temps d'exécution (benchmark) d'une fonction PHP
20.Exemples de scripts PHP
21.Erreurs fréquentes et les solutions
22.Archives
Version imprimable: imprimer