XXXI. Fonctions DOM

Introduction

L'extension DOM vous permet d'utiliser des documents XML via l'API DOM de PHP 5.

Pour PHP 4, utilisez l'extension DOM XML .

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 3 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 tableaux suivants. Les classes avec un équivalent dans les standards sont nommées DOMxxx.

DOMAttr

Étend DOMNode . L'interface DOMAttr représente un attribut dans l'objet DOMElement .

Constructeur

Méthodes

Propriétés

Tableau 52. 

Nom Type Lecture seule Description
name string oui Le nom de l'attribut
ownerElement DOMElement oui L'élément qui contient l'attribut
schemaTypeInfo bool oui Pas encore implémenté, retourne toujours NULL
specified bool oui Pas encore implémenté, retourne toujours NULL
value string non La valeur de l'attribut

DOMCharacterData

Étend DOMNode .

Méthodes

Propriétés

Tableau 53. 

Nom Type Lecture seule Description
data string non Le contenu du noeud
length int oui La longueur du contenu

DOMComment

Étend DOMCharacterData .

Constructeur

DOMDocument

Étend DOMNode .

Constructeur

Méthodes

Propriétés

Tableau 54. 

Nom Type Lecture seule Description
actualEncoding string oui  
config DOMConfiguration oui  
doctype DOMDocumentType oui La déclaration de type de document associée avec ce document.
documentElement DOMElement oui 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.
documentURI string non La localisation du document ou NULL si non défini.
encoding string non  
formatOutput bool non  
implementation DOMImplementation oui L'objet DOMImplementation qui représente ce document.
preserveWhiteSpace bool non Ne pas supprimer les espaces redondants. Vaut TRUE par défaut.
recover bool non  
resolveExternals bool non Définir à TRUE pour charger les entités externes depuis une déclaration doctype. Ceci est utile pour inclure des entités correspondant à des caractères dans vos documents XML.
standalone bool non  
strictErrorChecking bool non Envoie une DOMException en cas d'erreur. Vaut par défaut TRUE .
substituteEntities bool non  
validateOnParse bool non Charge et valide à nouveau la DTD. Vaut par défaut FALSE .
version string non  
xmlEncoding string oui 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.
xmlStandalone bool non 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é.
xmlVersion string non 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".

DOMDocumentFragment

Étend DOMNode .

Méthodes

DOMDocumentType

Étend DOMNode

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

Propriétés

Tableau 55. 

Nom Type Lecture seule Description
publicId string oui L'identifiant public du sous-ensemble externe.
systemId string oui L'identifiant système du sous-ensemble externe. Il peut être une URI absolue ou non.
name string oui Le nom de la DTD ; i.e. le nom suivant immédiatement le mot clé DOCTYPE
entities DOMNamedNodeMap oui Un DOMNamedNodeMap contenant les entités générales, externes et internes, déclarées dans la DTD.
notations DOMNamedNodeMap oui Un DOMNamedNodeMap contenant les notations déclarées dans la DTD.
internalSubset string oui 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

Étend DOMNode .

Constructeur

Méthodes

Propriétés

Tableau 56. 

Nom Type Lecture seule Description
schemaTypeInfo bool oui Pas encore implémenté, retourne toujours NULL
tagName string oui Le nom de l'élément

DOMEntity

Étend DOMNode

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

Propriétés

Tableau 57. 

Nom Type Lecture seule Description
publicId string oui L'identifiant public associé à l'entité si spécifiée, NULL sinon.
systemId string oui L'identifiant système associé à l'entité si spécifiée, NULL sinon. Ceci peut être une URI absolue ou non.
notationName string oui Pour les entités non-analysées, le nom de la notation pour cette entité. Pour les entités analysées, ceci vaut NULL .
actualEncoding string non 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.
encoding string oui 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.
version string oui 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

Étend DOMNode .

Constructeur

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 21, Les exceptions .

Propriétés

Tableau 58. 

Nom Type Lecture seule Description
code int oui Un 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épendantes de toute instance du model objet du document.

Constructeur

Méthodes

DOMNamedNodeMap

Méthodes

DOMNode

Méthodes

Propriétés

Tableau 59. 

Nom Type Lecture seule Description
nodeName string oui Retourne le nom le plus précis possible pour le type de noeud courant
nodeValue string non La valeur de ce noeud, dépendant de son type.
nodeType int oui Récupère le type du noeud. Une des constantes XML_xxx_NODE prédéfinies
parentNode DOMNode oui Le parent de ce noeud
childNodes DOMNodeList oui Un DOMNodeList qui contient tous les enfants de ce noeud. S'il n'y a pas d'enfant, ce sera un DOMNodeList vide.
firstChild DOMNode oui Le premier enfant de ce noeud. S'il n'y pas de tel noeud, ceci retourne NULL .
lastChild DOMNode oui Le dernier enfant de ce noeud. S'il n'y a pas de tel noeud, ceci retourne NULL .
previousSibling DOMNode oui Le noeud précédent immédiatement ce noeud. S'il n'y a pas de tel noeud, ceci retourne NULL .
nextSibling DOMNode oui Le noeud suivant immédiatement ce noeud. S'il n'y a pas de tel noeud, ceci retourne NULL .
attributes DOMNamedNodeMap oui Un DOMNamedNodeMap contenant les attributs de ce noeud (si c'est un DOMElement ) ou NULL sinon.
ownerDocument DOMDocument oui Un objet DOMDocument associé à ce noeud.
namespaceURI string oui L'URI de l'espace de noms de ce noeud, ou NULL si non spécifié.
prefix string non Le préfixe de l'espace de noms de ce noeud, ou NULL si non spécifié.
localName string oui Retourne la partie locale du nom qualifié de ce noeud.
baseURI string oui La base absolue de l'URI de ce noeud ou NULL si l'implémentation n'est pas arrivée à obtenir une URI absolue.
textContent string non Cet attribut retourne le contenu texte de ce noeud et ses descendants.

DOMNodeList

Méthodes

Propriétés

Tableau 60. 

Nom Type Lecture seule Description
length int oui Le nombre de noeuds dans la liste. La plage des indices des noeuds enfants valides est de 0 à length - 1 inclusivement.

DOMNotation

Étend DOMNode

Propriétés

Tableau 61. 

Nom Type Lecture seule Description
publicId string oui  
systemId string oui  

DOMProcessingInstruction

Étend DOMNode .

Constructeur

Propriétés

Tableau 62. 

Nom Type Lecture seule Description
target string oui  
data string non  

DOMText

Étend DOMCharacterData .

Constructeur

Méthodes

Propriétés

Tableau 63. 

Nom Type Lecture seule Description
wholeText string oui  

DOMXPath

Constructeur

Méthodes

Propriétés

Tableau 64. 

Nom Type Lecture seule Description
document DOMDocument    

Exemples

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

Exemple 655. 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 65. Constantes XML

Constante Valeur Description
XML_ELEMENT_NODE (entier ) 1 Le noeud est un DOMElement
XML_ATTRIBUTE_NODE (entier ) 2 Le noeud est un DOMAttr
XML_TEXT_NODE (entier ) 3 Le noeud est un DOMText
XML_CDATA_SECTION_NODE (entier ) 4 Le noeud est un DOMCharacterData
XML_ENTITY_REF_NODE (entier ) 5 Le noeud est un DOMEntityReference
XML_ENTITY_NODE (entier ) 6 Le noeud est un DOMEntity
XML_PI_NODE (entier ) 7 Le noeud est un DOMProcessingInstruction
XML_COMMENT_NODE (entier ) 8 Le noeud est un DOMComment
XML_DOCUMENT_NODE (entier ) 9 Le noeud est un DOMDocument
XML_DOCUMENT_TYPE_NODE (entier ) 10 Le noeud est un DOMDocumentType
XML_DOCUMENT_FRAG_NODE (entier ) 11 Le noeud est un DOMDocumentFragment
XML_NOTATION_NODE (entier ) 12 Le 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 66. Constantes DOMException

Constante Valeur Description
DOM_INDEX_SIZE_ERR (entier ) 1 Si l'index ou la taille sont négatifs ou plus grands 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 ) 3 Si un noeud est inséré à un endroit non autorisé
DOM_WRONG_DOCUMENT_ERR (entier ) 4 Si 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 faite de modifier un objet où les modifications ne sont pas autorisées.
DOM_NOT_FOUND_ERR (entier ) 8 Si une tentative est faite 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 faite d'ajouter un attribut qui est déjà utilisé autre part.
DOM_INVALID_STATE_ERR (entier ) 11 Si une tentative est faite 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 faite de modifier le type d'un objet fondamental.
DOM_NAMESPACE_ERR (entier ) 14 Si une tentative est faite 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ée et l'opération ne sera pas effectuée.

Table des matières

DOMAttr->__construct() — Crée un nouvel objet DOMAttr
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 morceau de données dans le noeud
DOMComment->__construct() — Crée un nouvel objet DOMComment
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 qui 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->normalizeDocument() — Normalise le document
DOMDocument->registerNodeClass() — Enregistre la classe étendue utilisée pour créer un type de base de noeud
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 formatage HTML
DOMDocument->saveHTMLFile() — Sauvegarde un document interne dans un fichier en utilisant un formatage 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
DOMDocumentFragment->appendXML() — Ajoute des données XML
DOMElement->__construct() — Crée un nouvel objet DOMElement
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
DOMElement->setIdAttribute() — Déclare l'attribut spécifié par son nom à être de type ID
DOMElement->setIdAttributeNode() — Déclare l'attribut spécifié par le noeud à être de type ID
DOMElement->setIdAttributeNS() — Déclare l'attribut spécifié par son nom local et son espace de nom URI à être de type ID
DOMEntityReference->__construct() — Crée un nouvel objet DOMEntityReference
DOMImplementation->__construct() — Crée un nouvel objet DOMImplementation
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() — Teste 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->isDefaultNamespace() — Vérifie si l'espace de nom spécifié est l'espace de noms par défaut ou non
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() — Crée un nouvel objet DOMProcessingInstruction
DOMText->__construct() — Crée un nouvel objet DOMText
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