« Programmation PHP/DOMDocument » : différence entre les versions
Contenu supprimé Contenu ajouté
Il est toujours conseillé d'avoir pris connaissance des pages précédentes + retrait d'un lien brisé |
|||
Ligne 11 :
== Qu'est-ce que DOMDocument ? ==
DOMDocument est une librairie de fonctions apparue avec PHP5<ref>http://php.net/manual/fr/book.dom.php</ref> et activée par défaut. Elle permet de concevoir des pages [[Programmation HTML|HTML]] sous forme d'
== Les avantages et les inconvénients ==
Ligne 24 :
Cette librairie présente de nombreuses similitudes avec le javascript aussi bien dans le fonctionnement que dans le nom de ses fonctions.
Un node est un élément qui est
- soit une balise (nodes Tag)
- soit du texte
- soit un attribut de balise
Les nodes sont
<source lang=php>
Ligne 38 :
Le node texte "Ce texte est" est également fils de <p> qui est parent du node texte.
Il existe un certain nombre de classes prédéfinies : DOMDocument, DOMNode, DOMElement, DOMText, DOMAttr, DOMList... Certaines sont très
== Importer une page préexistante ==
Il est possible d'importer une page
Voici le code important la page.
<source lang=php>
<?php
$doc = DOMDocument::loadHTMLFile("
?>
</source>
Ligne 53 :
La variable $doc contient donc un objet DOMDocument avec toutes les balises sous formes de nodes. Il est maintenant possible d'accéder aux nodes par le biais de fonctions préexistantes.
NB :
<source lang=php>
<?php
$doc = new DOMDocument();
$doc->loadHTMLFile("
?>
</source>
Ligne 76 :
Un des grands avantages de cette librairie est la capacité à enregistrer la page générée dans un fichier pour un affichage ultérieur. Il suffit d'avoir recours au code suivant :
<source lang=php>
$doc->saveHTMLFile("
</source>
Ligne 116 :
== La classe DOMNode ==
Les classes DOMElement, DOMText et DOMAttribute sont dérivées de cette classe. Ainsi, les méthodes et propriétés présentées ici seront disponibles pour leurs classes
Attention : un node une fois créé ne se trouve pas dans le document. Ajouter un node va se dérouler en deux étapes :
- on crée le node
- on l'insère dans le node parent ou à la racine du document.
Voici les propriétés accessibles à tout les nodes▼
<source lang=php>
$node->nodeType // Type de node. Vaut 1 pour un élément XML, 3 pour un texte
Ligne 154 ⟶ 153 :
</source>
Attention : seules les principales propriétés sont présentées. Si vous voulez en avoir la liste complète, vous pouvez consulter la documentation de référence sur
* Et les méthodes suivantes :
- Méthodes d'attributs
Ligne 174 ⟶ 173 :
$nodeList = $node->getElementsByTagName("strong");
</source>
Cette fonction retourne un objet ''nodeList'' qui contient une liste des balises <strong> enfants du node. Pour récupérer le n+1ème node de la liste, il suffit d'avoir recours à la méthode de l'objet ''nodeList'' suivante :
<source lang=php>
$strong5 = $nodeList->item(4); //Sélectionne la 5e balise <strong>
</source>
L'attribut ''length'' donne le nombre d'éléments de la liste. Exemple :
<source lang=php>
for ($i=0; $i<$nodeList->length; $i++)
Ligne 186 ⟶ 185 :
}
</source>
Comme vous le savez, ''tagName'' retourne le nom de la balise. Ici, le code retournera "strongstrongstrong…". En effet, seuls les nodes ''strong'' ont "été sélectionné.
Comme vous avez pu le remarquer, il est possible d'exécuter plusieurs méthodes et propriétés en même temps. Voici l'ordre d'exécution :
- La méthode item(
- La propriété ''tagName'' du node est appelée. Attention : c'est celle de l'objet retourné.
- La fonction ''echo'' affiche le nom de la balise
== La classe DOMText ==
Ligne 204 ⟶ 203 :
Elle n'est accessible qu'en lecture seule.
La classe ''DOMText'' admet deux méthodes :
<source lang="php">
|