La classe DOMDocument

(PHP 5, PHP 7, PHP 8)

Introduction

Représente un document HTML ou XML entier ; ce sera la racine de l'arbre document.

Synopsis de la classe

class DOMDocument extends DOMNode implements DOMParentNode {
/* Constantes héritées */
/* Propriétés */
public readonly ?DOMDocumentType $doctype;
public readonly ?DOMElement $documentElement;
public readonly ?string $actualEncoding;
public ?string $encoding;
public readonly ?string $xmlEncoding;
public ?string $version;
public readonly mixed $config;
public bool $recover;
public readonly ?DOMElement $firstElementChild;
public readonly ?DOMElement $lastElementChild;
public readonly int $childElementCount;
/* Propriétés héritées */
public readonly string $nodeName;
public readonly int $nodeType;
public readonly ?DOMNode $parentNode;
public readonly ?DOMElement $parentElement;
public readonly DOMNodeList $childNodes;
public readonly ?DOMNode $firstChild;
public readonly ?DOMNode $lastChild;
public readonly ?DOMNode $previousSibling;
public readonly ?DOMNode $nextSibling;
public readonly ?DOMNamedNodeMap $attributes;
public readonly bool $isConnected;
public readonly ?DOMDocument $ownerDocument;
public readonly ?string $namespaceURI;
public string $prefix;
public readonly ?string $localName;
public readonly ?string $baseURI;
/* Méthodes */
public function __construct(string $version = "1.0", string $encoding = "")
public function adoptNode(DOMNode $node): DOMNode|false
public function append(DOMNode|string ...$nodes): void
public function createAttribute(string $localName): DOMAttr|false
public function createAttributeNS(?string $namespace, string $qualifiedName): DOMAttr|false
public function createComment(string $data): DOMComment
public function createElement(string $localName, string $value = ""): DOMElement|false
public function createElementNS(?string $namespace, string $qualifiedName, string $value = ""): DOMElement|false
public function createTextNode(string $data): DOMText
public function getElementById(string $elementId): ?DOMElement
public function getElementsByTagName(string $qualifiedName): DOMNodeList
public function getElementsByTagNameNS(?string $namespace, string $localName): DOMNodeList
public function importNode(DOMNode $node, bool $deep = false): DOMNode|false
public function load(string $filename, int $options = 0): bool
public function loadHTML(string $source, int $options = 0): bool
public function loadHTMLFile(string $filename, int $options = 0): bool
public function loadXML(string $source, int $options = 0): bool
public function normalizeDocument(): void
public function prepend(DOMNode|string ...$nodes): void
public function registerNodeClass(string $baseClass, ?string $extendedClass): true
public function relaxNGValidate(string $filename): bool
public function relaxNGValidateSource(string $source): bool
public function replaceChildren(DOMNode|string ...$nodes): void
public function save(string $filename, int $options = 0): int|false
public function saveHTML(?DOMNode $node = null): string|false
public function saveHTMLFile(string $filename): int|false
public function saveXML(?DOMNode $node = null, int $options = 0): string|false
public function schemaValidate(string $filename, int $flags = 0): bool
public function schemaValidateSource(string $source, int $flags = 0): bool
public function validate(): bool
public function xinclude(int $options = 0): int|false
/* Méthodes héritées */
public function DOMNode::appendChild(DOMNode $node): DOMNode|false
public function DOMNode::C14N(
    bool $exclusive = false,
    bool $withComments = false,
    ?array $xpath = null,
    ?array $nsPrefixes = null
): string|false
public function DOMNode::C14NFile(
    string $uri,
    bool $exclusive = false,
    bool $withComments = false,
    ?array $xpath = null,
    ?array $nsPrefixes = null
): int|false
public function DOMNode::cloneNode(bool $deep = false): DOMNode|false
public function DOMNode::getLineNo(): int
public function DOMNode::getNodePath(): ?string
public function DOMNode::getRootNode(?array $options = null): DOMNode
public function DOMNode::hasAttributes(): bool
public function DOMNode::hasChildNodes(): bool
public function DOMNode::insertBefore(DOMNode $node, ?DOMNode $child = null): DOMNode|false
public function DOMNode::isDefaultNamespace(string $namespace): bool
public function DOMNode::isEqualNode(?DOMNode $otherNode): bool
public function DOMNode::isSameNode(DOMNode $otherNode): bool
public function DOMNode::isSupported(string $feature, string $version): bool
public function DOMNode::lookupNamespaceURI(?string $prefix): ?string
public function DOMNode::lookupPrefix(string $namespace): ?string
public function DOMNode::normalize(): void
public function DOMNode::removeChild(DOMNode $child): DOMNode|false
public function DOMNode::replaceChild(DOMNode $node, DOMNode $child): DOMNode|false
public function DOMNode::__sleep(): array
public function DOMNode::__wakeup(): void
}

Propriétés

actualEncoding

Obsolète à partir de PHP 8.4.0. L'encodage actuel du document, en lecture seule, équivalent à encoding.

childElementCount

Le nombre d'éléments enfants.

config

Obsolète à partir de PHP 8.4.0. Configuration utilisée lorsque DOMDocument::normalizeDocument() est appelé.

doctype

Le Document Type Declaration associé à ce document.

documentElement

L'objet DOMElement qui est le premier élément du document. S'il n'est pas trouvé, ceci est évalué à null.

documentURI

La localisation du document, ou null si indéfini.

encoding

L'encodage du document, tel que spécifié par la déclaration XML. Cet attribut n'est pas présent dans la spécification DOM Level 3 finale, mais représente la seule façon de manipuler l'encodage du document XML dans cette implémentation.

firstElementChild

Premier élément enfant ou null.

formatOutput

Formate élégamment le résultat avec une indentation et des espaces supplémentaires. Ce paramètre n'a aucun effet si le document a été chargé avec l'activation de preserveWhitespace.

implementation

L'objet DOMImplementation qui gère ce document.

lastElementChild

Dernier élément enfant ou null.

preserveWhiteSpace

Ne pas supprimer les espaces redondants. Vaut par défaut true. Définir ce paramètre à false a le même effet que de définir à LIBXML_NOBLANKS le paramètre option de la méthode DOMDocument::load().

recover

Propriétaire. Active le mode "recovery", c.-à-d. tente d'analyser un document mal formé. Cet attribut ne fait pas partie de la spécification DOM et est spécifique à libxml.

resolveExternals

Définir à true pour charger des entités externes depuis la déclaration doctype. C'est utile pour inclure des entités dans les documents XML.

standalone

Obsolète. Si le document est "standalone", ou non, tel que spécifié par la déclaration XML, correspondant à xmlStandalone.

strictErrorChecking

Lève une DOMException en cas d'erreur. Par défaut, vaut true.

substituteEntities

Propriétaire. Si l'on doit ou non substituer les entités. Cet attribut ne fait pas partie de la spécification DOM et est spécifique à libxml. Par défaut, false.

Attention

Activer la substitution d'entités peut faciliter les attaques XML External Entity (XXE).

validateOnParse

Charge et valide la DTD. Par défaut, vaut false.

Attention

Activer la validation de la DTD peut faciliter les attaques XML External Entity (XXE).

version

Obsolète. Version du XML, correspond à xmlVersion.

xmlEncoding

Un attribut spécifiant l'encodage du document. Il vaut null lorsque l'encodage n'est pas spécifié, ou lorsqu'il est inconnu, comme c'est le cas lorsque le document a été créé en mémoire.

xmlStandalone

Un attribut spécifiant si le document est "standalone". Il vaut false lorsque non spécifié. Un document standalone est un document où il n'y a pas de déclarations de balisage externes. Un exemple d'une telle déclaration de balisage est lorsque la DTD déclare un attribut avec une valeur par défaut.

xmlVersion

Un attribut spécifiant le numéro de version du document. S'il n'y a pas de déclaration et si le document supporte la fonctionnalité "XML", la valeur sera "1.0".

Historique

Version Description
8.4.0 actualEncoding et config sont désormais formellement dépréciés.
8.0.0 DOMDocument implémente désormais DOMParentNode.
8.0.0 La méthode non implémentée DOMDocument::renameNode() a été retirée.

Notes

Note: L'extension DOM utilise l'encodage UTF-8. Utilisez mb_convert_encoding(), UConverter::transcode(), ou iconv() pour manipuler d'autres encodages.

Note: Lors de l'utilisation de json_encode() sur un objet DOMDocument le résultat sera celui d'encoder un objet vide.

Sommaire