XXVII. Fonctions DOM

Introduction

L'extension DOM est le remplacement de l'extension DOM XML en PHP 4. Cette extension contient encore plusieurs anciennes fonctions mais elles ne doivent plus être utilisées. En particulier, les fonctions procédurales.

Cette extension vous permet de manipuler des documents XML avec l'API DOM.

Installation

Il n'y pas d'installation nécessaire pour utiliser ces fonctions, elles font parties du coeur de PHP.

Classes pré-définies

L'API de ce module suit, autant que possible, les standards niveau 2 de DOM. En conséquent, l'API est pleinement orientée objets. Il est bien d'avoir les standards DOM sous la main lors de l'utilisation de cette extension.

Ce module définit plusieurs classes, qui sont expliquées dans les tablaux suivants. Les classes avec un équivalent dans les standards sont nommées DOMxxx.

DOMAttr

Etend DOMNode.

Méthodes

Propriétés

Tableau 1.

NomTypeLecture seulDescription
namestringouiLe nom de l'attribut
ownerElementDOMElementouiL'élément qui contient l'attribut
schemaTypeInfoboolouiPas encore implémenté, retourne toujours TRUE
specifiedboolouiPas encore implémenté, retourne toujours TRUE
valuestringnonLa valeur de l'attribut

DOMCharacterData

Etend DOMNode.

Méthodes

Propriétés

Tableau 2.

NomTypeLecture seulDescription
datastringnonLe contenu du noeud
lengthintouiLa longueur du contenu

DOMDocument

Etend DOMNode.

Constructeur

Méthodes

Propriétés

Tableau 3.

NomTypeLecture seulDescription
actualEncodingstringoui 
configDOMConfigurationoui 
doctypeDOMDocumentTypeoui La déclaration de type de document associée avec ce document.
documentElementDOMElementoui C'est un attribut de convenance qui permet l'accès direct à l'enfant d'un noeud qui est l'élément document de ce document.
documentURIstringnon La localisation du document ou NULL si non défini.
encodingstringnon 
formatOutputboolnon 
implementationDOMImplementationoui L'objet DOMImplementation qui représente ce document.
preserveWhiteSpaceboolnonNe pas supprimer les espaces redondants. Vaut TRUE par défaut.
recoverboolnon 
resolveExternalsboolnon Définir à TRUE pour charger les entitiés externes depuis une déclaration doctype. Ceci est utile pour inclure des entités correspondants à des caractères dans vos documents XML.
standaloneboolnon 
strictErrorCheckingboolnonEnvoi une DOMException en cas d'erreurs. Vaut par défaut TRUE.
substituteEntitiesboolnon 
validateOnParseboolnonCharge et valide à nouveau la DTD. Vaut par défaut FALSE.
versionstringnon 
xmlEncodingstringoui Un attribut spécifiant, en tant que partie de la déclaration XML, l'encodage de ce document. Il vaut NULL lorsqu'il n'et pas spécifié ou lorsqu'il n'est pas connu, par exemple, lorsque le document a été créé en mémoire.
xmlStandaloneboolnon Un attribut spécifiant, en tant que partie de la déclaration XML, si oui ou non le document est autonome. Il vaut FALSE si non spécifié.
xmlVersionstringnon Un attribut spécifiant, en tant que partie de la déclaration XML, le numéro de version de ce document. S'il n'y a pas de déclaration et si le document supporte la fonctionnalité "XML", la valeur sera "1.0".

DOMDocumentType

Etend DOMNode

Chaque DOMDocument a un attribut doctype de valeur soit NULL, soit un objet DOMDocumentType.

Propriétés

Tableau 4.

NomTypeLecture seulDescription
publicIdstringouiL'identifiant public du sous-ensemble externe.
systemIdstringouiL'identifiant système du sous-ensemble externe. Il peut être une URI absolue ou non.
namestringouiLe nom de la DTD ; i.e. le nom sivant immédiatement le mot clé DOCTYPE
entitiesDOMNamedNodeMapoui Un DOMNamedNodeMap contenant les entitiés générales, externes et internes, déclarées dans la DTD.
notationsDOMNamedNodeMapoui Un DOMNamedNodeMap contenant les notations déclarées dans la DTD.
internalSubsetstringoui Le sous-ensemble interne en tant que chaîne de caractères ou NULL s'il n'y en a pas. Ceci ne contient pas les crochets délimitants.

DOMElement

Etend DOMNode.

Méthodes

Propriétés

Tableau 5.

NomTypeLecture seulDescription
schemaTypeInfoboolouiPas encore implémenté, retourne toujours TRUE
tagNamestringouiLe nom de l'élément

DOMEntity

Etend DOMNode

Cette interface représente une entité connue, annalysée ou non, du document XML.

Propriétés

Tableau 6.

NomTypeLecture seulDescription
publicIdstringoui L'identifiant public associé à l'entité si spécifiée, NULL sinon.
systemIdstringoui L'identifiant système associé à l'entité si spécifié, NULL sinon. Ceci peut être une URI absolue ou non.
notationNamestringoui Pour les entités non-analysées, le nom de la notation pour cette entité. Pour les entités analysées, ceci vaut NULL.
actualEncodingstringnon Un attribut spécifiant l'encodage utilisé pour cette entité au moment de l'analyse, lorsque c'est une entité analysée externe. Ceci vaut NULL si c'est une entité du sous-ensemble externe ou si elle n'est pas connue.
encodingstringoui Un attribut spécifiant, en tant que partie de la déclaration texte, l'encodage de cette entité, lorsque c'est une entité analysée externe. Ceci vaut NULL sinon.
versionstringoui Un attribut spécifiant, en tant que partie de la déclaration texte, le numéro de version de cette entité, lorsque c'est une entité analysée externe. Ceci vaut NULL sinon.

DOMEntityReference

Etend DOMNode.

DOMException

Les opérations DOM lancent des exceptions sous des circonstances particulières, i.e., lorsqu'une opération est impossible à effectuer pour des raisons de logique.

Voir aussi Chapitre 20.

Propriétés

Tableau 7.

NomTypeLecture seulDescription
codeintouiUn entier indiquant le type d'erreur générée

DOMImplementation

L'interface DOMImplementation fournit un nombre de méthodes pour effectuer des opérations qui sont indépendant de toute instance du model objet du document.

Méthodes

DOMNameList

Propriétés

Tableau 8.

NomTypeLecture seulDescription
lengthintoui Le nombre de paires (nom et espace de noms de l'URI) dans la liste. L'intervalle valide pour les indices des enfants des noeuds est 0 à length - 1.

DOMNode

Méthodes

Propriétés

Tableau 9.

NomTypeLecture seulDescription
nodeNamestringouiRetourne le nom le plus précis possible pour le type de noeud courant
nodeValuestringnonLa valeur de ce noeud, dépendant de son type.
nodeTypeintouiRécupère le type du noeud. Une des constantes XML_xxx_NODE pré-définies
parentNodeDOMNodeouiLe parent de ce noeud
childNodesDOMNodeListoui Un DOMNodeList qui contient tous les enfants de ce noeud. S'il n'y a pas d'enfant, ce sera un DOMNodeList vide.
firstChildDOMNodeoui Le premier enfant de ce noeud. S'il n'y pas de tel noeud, ceci retourne NULL.
lastChildDOMNodeoui Le dernier enfant de ce noeud. S'il n'y a pas de tel noeud, ceci retourne NULL.
previousSiblingDOMNodeoui Le noeud précédent immédiatement ce noeud. S'il n'y a pas de tel noeud, ceci retourne NULL.
nextSiblingDOMNodeoui Le noeud suivant immédiatement ce noeud. S'il n'y a pas de tel noeud, ceci retourne NULL.
attributesDOMNamedNodeMapoui Un DOMNamedNodeMap contenant les attributs de ce noeud (si c'est un DOMElement) ou NULL sinon.
ownerDocumentDOMDocumentoui Un objet DOMDocument associé à ce noeud.
namespaceURIstringouiL'URI de l'espace de noms de ce noeud, ou NULL si non spécifié.
prefixstringnon Le préfixe de l'espace de noms de ce noeud, ou NULL si non spécifié.
localNamestringoui Retourne la partie locale du nom qualifié de ce noeud.
baseURIstringoui La base absolue de l'URI de ce noeud ou NULL si l'implémentation n'est pas arrivée à obtenir une URI absolue.
textContentstringnon Cet attribut retourne le contenu texte de ce noeud et ces descendants.

DOMNotation

Etend DOMNode

Propriétés

Tableau 10.

NomTypeLecture seulDescription
publicIdstringoui 
systemIdstringoui 

DOMProcessingInstruction

Etend DOMNode.

Propriétés

Tableau 11.

NomTypeLecture seulDescription
targetstringoui 
datastringnon 

DOMText

Méthodes

Propriétés

Tableau 12.

NomTypeLecture seulDescription
wholeTextstringoui 

DOMXPath

Constructeur

Méthodes

Propriétés

Tableau 13.

NomTypeLecture seulDescription
documentDOMDocument  

Exemples

La plupart des exemples de cette référence requiert un fichier XML. Nous utiliserons le fichier book.xml qui contient ce qui suit :

Exemple 1. chapter.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
]>
<book id="listing">
 <title>My lists</title>
 <chapter id="books">
  <title>My books</title>
  <para>
   <informaltable>
    <tgroup cols="4">
     <thead>
      <row>
       <entry>Title</entry>
       <entry>Author</entry>
       <entry>Language</entry>
       <entry>ISBN</entry>
      </row>
     </thead>
     <tbody>
      <row>
       <entry>The Grapes of Wrath</entry>
       <entry>John Steinbeck</entry>
       <entry>en</entry>
       <entry>0140186409</entry>
      </row>
      <row>
       <entry>The Pearl</entry>
       <entry>John Steinbeck</entry>
       <entry>en</entry>
       <entry>014017737X</entry>
      </row>
      <row>
       <entry>Samarcande</entry>
       <entry>Amine Maalouf</entry>
       <entry>fr</entry>
       <entry>2253051209</entry>
      </row>
      <!-- TODO: I have a lot of remaining books to add.. -->
     </tbody>
    </tgroup>
   </informaltable>
  </para>
 </chapter>
</book>

Constantes pré-définies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Tableau 14. Constantes XML

ConstanteValeurDescription
XML_ELEMENT_NODE (entier) 1Le noeud est un DOMElement
XML_ATTRIBUTE_NODE (entier) 2Le noeud est un DOMAttr
XML_TEXT_NODE (entier) 3Le noeud est un DOMText
XML_CDATA_SECTION_NODE (entier) 4Le noeud est un DOMCharacterData
XML_ENTITY_REF_NODE (entier) 5Le noeud est un DOMEntityReference
XML_ENTITY_NODE (entier) 6Le noeud est un DOMEntity
XML_PI_NODE (entier) 7Le noeud est un DOMProcessingInstruction
XML_COMMENT_NODE (entier) 8Le noeud est un DOMComment
XML_DOCUMENT_NODE (entier) 9Le noeud est un DOMDocument
XML_DOCUMENT_TYPE_NODE (entier) 10Le noeud est un DOMDocumentType
XML_DOCUMENT_FRAG_NODE (entier) 11Le noeud est un DOMDocumentFragment
XML_NOTATION_NODE (entier) 12Le noeud est un DOMNotation
XML_HTML_DOCUMENT_NODE (entier) 13 
XML_DTD_NODE (entier) 14 
XML_ELEMENT_DECL_NODE (entier) 15 
XML_ATTRIBUTE_DECL_NODE (entier) 16 
XML_ENTITY_DECL_NODE (entier) 17 
XML_NAMESPACE_DECL_NODE (entier) 18 
XML_ATTRIBUTE_CDATA (entier) 1 
XML_ATTRIBUTE_ID (entier) 2 
XML_ATTRIBUTE_IDREF (entier) 3 
XML_ATTRIBUTE_IDREFS (entier) 4 
XML_ATTRIBUTE_ENTITY (entier) 5 
XML_ATTRIBUTE_NMTOKEN (entier) 7 
XML_ATTRIBUTE_NMTOKENS (entier) 8 
XML_ATTRIBUTE_ENUMERATION (entier) 9 
XML_ATTRIBUTE_NOTATION (entier) 10 

Tableau 15. Constantes DOMException

ConstanteValeurDescription
DOM_INDEX_SIZE_ERR (entier) 1 Si l'index ou la taille est négatif ou plus grand que la valeur autorisée.
DOMSTRING_SIZE_ERR (entier) 2 Si la rangée spécifiée de texte ne tient pas dans le DOMString.
DOM_HIERARCHY_REQUEST_ERR (entier) 3Si un noeud est inséré à un endroit non autorisé
DOM_WRONG_DOCUMENT_ERR (entier) 4Si un noeud est utilisé dans un document autre que celui qui l'a créé.
DOM_INVALID_CHARACTER_ERR (entier) 5 Si un caractère invalide ou non autorisé est spécifié, par exemple, dans un nom.
DOM_NO_DATA_ALLOWED_ERR (entier) 6 Si des données sont spécifiées dans un noeud qui ne supporte pas les données.
DOM_NO_MODIFICATION_ALLOWED_ERR (entier) 7 Si une tentative est faîte de modifier un objet où les modifications ne sont pas autorisées.
DOM_NOT_FOUND_ERR (entier) 8 Si une tentative est faîte de référencer un noeud dans un contexte où il n'existe pas.
DOM_NOT_SUPPORTED_ERR (entier) 9 Si l'implémentation ne supporte pas le type requis de l'objet ou de l'opération.
DOM_INUSE_ATTRIBUTE_ERR (entier) 10 Si une tentative est faîte d'ajouter un attribut qui est déjà utilisé autre part.
DOM_INVALID_STATE_ERR (entier) 11 Si une tentative est faîte d'utiliser un objet qui n'est pas, ou n'est plus, utilisable.
DOM_SYNTAX_ERR (entier) 12 Si une chaîne de caractères invalide ou illégale est spécifiée.
DOM_INVALID_MODIFICATION_ERR (entier) 13 Si une tentative est faîte de modifier le type d'un objet fondamental.
DOM_NAMESPACE_ERR (entier) 14 Si une tentative est faîte de créer ou de modifier un objet dans un sens qui est incorrect au regard de l'espace de noms.
DOM_INVALID_ACCESS_ERR (entier) 15 Si un paramètre ou une opération n'est pas supporté par l'objet fondamental.
DOM_VALIDATION_ERR (entier) 16 Si un appel à une méthode tel que insertBefore ou removeChild voudrait rendre le noeud invalide avec le respect de la validation partielle, cette exception sera exécuté et l'opération ne sera pas effectué.
Table des matières
DOMAttr->__construct() --  Creates a new DOMAttr object
DOMAttr->isId() --  Vérifie si l'attribut est un identifiant défini
DOMCharacterData->appendData() --  Ajoute la chaîne à la fin des données dans le noeud
DOMCharacterData->deleteData() --  Supprime une sous-chaîne dans le noeud
DOMCharacterData->insertData() --  Insère une chaîne à la position spécifiée d'unité 16-bit
DOMCharacterData->replaceData() --  Remplace une sous-chaîne dans le noeud DOMCharacterData node
DOMCharacterData->substringData() --  Extrait un morceaux de données dans le noeud
DOMComment->__construct() --  Creates a new DOMComment object
DOMDocument->__construct() --  Crée un nouvel objet DOMDocument
DOMDocument->createAttribute() -- Crée un nouvel attribut
DOMDocument->createAttributeNS() --  Crée un nouvel attribut avec un espace de noms associé
DOMDocument->createCDATASection() -- Crée un nouveau noeud cdata
DOMDocument->createComment() -- Crée un nouveau noeud de commentaire
DOMDocument->createDocumentFragment() -- Crée un nouveau fragment de document
DOMDocument->createElement() -- Crée un nouveau noeud
DOMDocument->createElementNS() --  Crée un nouveau noeud avec un espace de noms associé
DOMDocument->createEntityReference() -- Crée un nouveau noeud de référence d'entité
DOMDocument->createProcessingInstruction() -- Crée un nouveau noeud PI
DOMDocument->createTextNode() -- Crée un nouveau noeud de texte
DOMDocument->getElementById() -- Cherche un élément avec un certain identifiant
DOMDocument->getElementsByTagName() -- Cherche tous les éléments quit ont le nom de balise donné
DOMDocument->getElementsByTagNameNS() --  Recherche tous les éléments avec un nom de balise donné dans un espace de noms spécifié
DOMDocument->importNode() -- Importe un noeud dans le document courant
DOMDocument->load() --  Charge du XML depuis un fichier
DOMDocument->loadHTML() --  Charge du HTML à partir d'une chaîne de caractères
DOMDocument->loadHTMLFile() --  Charge du HTML à partir d'un fichier
DOMDocument->loadXML() --  Charge du XML depuis une chaîne de caractères
DOMDocument->normalize() --  Normalise le document
DOMDocument->relaxNGValidate() --  Effectue une validation relaxNG sur le document
DOMDocument->relaxNGValidateSource() --  Effectue une validation relaxNG sur le document
DOMDocument->save() --  Sauvegarde l'arbre interne XML dans un fichier
DOMDocument->saveHTML() --  Sauvegarde le document interne dans une chaîne en utilisant un formattage HTML
DOMDocument->saveHTMLFile() --  Sauvegarde un document interne dans un fichier en utilisant un formattage HTML
DOMDocument->saveXML() --  Sauvegarde l'arbre interne XML dans une chaîne de caractères
DOMDocument->schemaValidate() --  Valide un document selon un schéma
DOMDocument->schemaValidateSource() --  Valide un document selon un schéma
DOMDocument->validate() --  Valide un document en se basant sur sa DTD
DOMDocument->xinclude() --  Remplace les XIncludes dans un objet DOMDocument
DOMElement->__construct() --  Creates a new DOMElement object
DOMElement->getAttribute() -- Retourne la valeur d'un attribut
DOMElement->getAttributeNode() -- Retourne le noeud d'attribut
DOMElement->getAttributeNodeNS() --  Retourne le noeud d'attribut
DOMElement->getAttributeNS() -- Retourne la valeur de l'attribut
DOMElement->getElementsByTagName() -- Retourne les éléments par leur nom de balise
DOMElement->getElementsByTagNameNS() -- Récupère les éléments par leur espace de noms et leur localName
DOMElement->hasAttribute() -- Vérifie si un attribut existe
DOMElement->hasAttributeNS() --  Vérifie si un attribut existe
DOMElement->removeAttribute() -- Efface un attribut
DOMElement->removeAttributeNode() -- Efface un attribut
DOMElement->removeAttributeNS() -- Efface un attribut
DOMElement->setAttribute() -- Ajoute un nouvel attribut
DOMElement->setAttributeNode() -- Ajoute un nouvel attribut à l'élément
DOMElement->setAttributeNodeNS() -- Ajoute un nouvel attribut à l'élément
DOMElement->setAttributeNS() -- Ajoute un nouvel attribut
DOMAttr->__construct() --  Creates a new DOMEntityReference object
DOMImplementation->createDocument() --  Crée un objet DOM Document du type spécifié avec ses éléments
DOMImplementation->createDocumentType() --  Crée un objet DOMDocumentType vide
DOMImplementation->hasFeature() --  Test si l'implémentation DOM implémente une fonctionnalité spécifique
DOMNamedNodeMap->getNamedItem() --  Retourne un noeud spécifié par nom nom
DOMNamedNodeMap->getNamedItemNS() --  Retourne un noeud spécifié par son nom local et son espace de nom
DOMNamedNodeMap->item() -- Retourne un noeud selon son index
DOMNode->appendChild() --  Ajoute un nouveau fils à la fin des fils
DOMNode->cloneNode() --  Clone un noeud
DOMNode->hasAttributes() --  Vérifie si le noeud possède un attribut
DOMNode->hasChildNodes() --  Vérifie si le noeud possède des enfants
DOMNode->insertBefore() --  Ajoute un nouveau fils à la fin des enfants
DOMNode->isSameNode() --  Indique si deux noeuds sont identiques
DOMNode->isSupported() --  Vérifie si la fonctionnalité est disponible pour la version spécifiée
DOMNode->lookupNamespaceURI() --  Retourne l'URI de l'espace de noms selon le préfixe
DOMNode->lookupPrefix() --  Retourne le préfixe de l'espace de noms selon l'URI de l'espace de noms
DOMNode->normalize() --  Normalise le noeud
DOMNode->removeChild() --  Supprime un fils de la liste des enfants
DOMNode->replaceChild() --  Remplace un fils
DOMNodelist->item() --  Retourne un noeud spécifié par son index
DOMProcessingInstruction->__construct() --  Creates a new DOMProcessingInstruction object
DOMText->__construct() --  Creates a new DOMText object
DOMText->isWhitespaceInElementContent() --  Indique si ce noeud de texte contient des espaces blancs
DOMText->splitText() --  Coupe le noeud en deux noeuds à l'endroit spécifié
DOMXPath->__construct() --  Crée un nouvel objet DOMXPath
DOMXPath->evaluate() --  Evalue une expression XPath donnée et retourne un résultat écrit si possible
DOMXPath->query() --  Evalue l'expression XPath donnée
DOMXPath->registerNamespace() --  Enregistre l'espace de noms avec l'objet DOMXpath
dom_import_simplexml --  Transforme un objet DOMElement en un objet SimpleXMLElement