Класс DOMDocument

(PHP 5, PHP 7, PHP 8)

Введение

Представляет весь HTML- или XML-документ; корень дерева документа.

Обзор классов

class DOMDocument extends DOMNode implements DOMParentNode {
/* Свойства */
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;
/* Наследуемые свойства */
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;
/* Методы */
public __construct(string $version = "1.0", string $encoding = "")
public append(DOMNode|string ...$nodes): void
public createAttribute(string $localName): DOMAttr|false
public createAttributeNS(?string $namespace, string $qualifiedName): DOMAttr|false
public createElement(string $localName, string $value = ""): DOMElement|false
public createElementNS(?string $namespace, string $qualifiedName, string $value = ""): DOMElement|false
public getElementById(string $elementId): ?DOMElement
public getElementsByTagName(string $qualifiedName): DOMNodeList
public getElementsByTagNameNS(?string $namespace, string $localName): DOMNodeList
public importNode(DOMNode $node, bool $deep = false): DOMNode|false
public load(string $filename, int $options = 0): bool
public loadHTML(string $source, int $options = 0): bool
public loadHTMLFile(string $filename, int $options = 0): bool
public loadXML(string $source, int $options = 0): bool
public prepend(DOMNode|string ...$nodes): void
public registerNodeClass(string $baseClass, ?string $extendedClass): bool
public relaxNGValidate(string $filename): bool
public replaceChildren(DOMNode|string ...$nodes): void
public save(string $filename, int $options = 0): int|false
public saveHTML(?DOMNode $node = null): string|false
public saveHTMLFile(string $filename): int|false
public saveXML(?DOMNode $node = null, int $options = 0): string|false
public schemaValidate(string $filename, int $flags = 0): bool
public schemaValidateSource(string $source, int $flags = 0): bool
public validate(): bool
public xinclude(int $options = 0): int|false
/* Наследуемые методы */
public DOMNode::C14N(
    bool $exclusive = false,
    bool $withComments = false,
    ?array $xpath = null,
    ?array $nsPrefixes = null
): string|false
public DOMNode::C14NFile(
    string $uri,
    bool $exclusive = false,
    bool $withComments = false,
    ?array $xpath = null,
    ?array $nsPrefixes = null
): int|false
public DOMNode::isEqualNode(?DOMNode $otherNode): bool
public DOMNode::isSameNode(DOMNode $otherNode): bool
public DOMNode::isSupported(string $feature, string $version): bool
}

Свойства

actualEncoding

Устарело. Кодировка документа — доступный только для чтения эквивалент свойства encoding.

childElementCount

Количество дочерних элементов.

config

Устарело. Конфигурация, которая будет использована при вызове метода DOMDocument::normalizeDocument().

doctype

Объявление типа документа, которое соответствует этому документу.

documentElement

Объект DOMElement — первый элемент документа. Если не найден, оценивается как null. Удобный атрибут, который даёт прямой доступ к дочернему узлу как к элементу документа. Значение null, если не существует.

documentURI

Расположение документа или null, если оно не определено.

encoding

Кодировка документа, как указано в объявлении XML. Этого атрибута нет в последней спецификации DOM Level 3, но он — единственный способ манипулирования кодировкой XML-документа в этой реализации.

firstElementChild

Первый дочерний элемент или null.

formatOutput

Форматирует вывод, добавляя отступы и дополнительные пробелы. Не работает, если документ был загружен с включённым свойством preserveWhitespace.

implementation

Объект класса DOMImplementation, обрабатывающий этот документ.

lastElementChild

Последний дочерний элемент или null.

preserveWhiteSpace

Указание не убирать лишние пробелы и отступы. По умолчанию true. Установка этого значения в false даёт тот же эффект, что и передача константы LIBXML_NOBLANKS в качестве параметра option в метод DOMDocument::load() и т. д.

recover

Проприетарное свойство. Включает режим восстановления, то есть пытается разобрать некорректно составленные (non-well formed) документы. Этот атрибут не входит в спецификацию DOM и специфичен для модуля libxml.

resolveExternals

Устанавливают в true для загрузки внешних элементов из объявления типа документа. Полезен при включении элементов с символьными данными в XML-документ.

standalone

Устарело. Указание, что документ не зависит от других XML-документов, как указано в декларации XML, соответствует свойству xmlStandalone.

strictErrorChecking

Выбрасывает исключение DOMException в случае ошибок. По умолчанию true.

substituteEntities

Патентованное свойство. Указывает, заменять ли элементы документа. Этот атрибут не входит в спецификацию DOM и специфичен для модуля libxml. По умолчанию false.

Предостережение

Включение подмены сущностей способствует атакам XML External Entity (XXE).

validateOnParse

Загружает DTD и проверяет документ на соответствие. По умолчанию false.

Предостережение

Включение проверки DTD способствует атакам XML External Entity (XXE).

version

Устарело. Версия XML, соответствует xmlVersion.

xmlEncoding

Атрибут, который определяет, как часть XML-объявления, кодировку документа. Значение равно null, если его не указали, или когда значение неизвестно, например, когда документ создали в памяти.

xmlStandalone

Атрибут, который определяет, как часть XML-объявления, что документ автономный. Принимает значение false, если не указан. Автономный документ — документ, в котором отсутствуют объявления внешней разметки. Пример такого объявления разметки — объявление в типе документа DTD атрибута со значением по умолчанию.

xmlVersion

Атрибут, который определяет, как часть XML-объявления, номер версии этого документа. Если объявления в документе нет, но есть поддержка всех особенностей «XML», значение равно «1.0».

Список изменений

Версия Описание
8.0.0 Класс DOMDocument теперь реализует интерфейс DOMParentNode.
8.0.0 Нереализованный метод DOMDocument::renameNode() был удалён.

Примечания

Замечание:

Модуль DOM работает с кодировкой UTF-8. Для работы с другими кодировками пользуются функциями mb_convert_encoding(), UConverter::transcode() или iconv().

Замечание:

При использовании json_encode() для объекта DOMDocument будет получен результат кодирования пустого объекта.

Содержание