Класс 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 bool $standalone;
public bool $xmlStandalone;
public ?string $version;
public ?string $xmlVersion;
public ?string $documentURI;
public readonly mixed $config = null;
public bool $formatOutput;
public bool $validateOnParse;
public bool $resolveExternals;
public bool $preserveWhiteSpace;
public bool $recover;
public bool $substituteEntities;
public readonly ?DOMElement $firstElementChild;
public readonly ?DOMElement $lastElementChild;
public readonly int $childElementCount;
/* Наследуемые свойства */
public readonly string $nodeName;
public ?string $nodeValue;
public readonly int $nodeType;
public readonly ?DOMNode $parentNode;
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 ?DOMDocument $ownerDocument;
public readonly ?string $namespaceURI;
public string $prefix;
public readonly ?string $localName;
public readonly ?string $baseURI;
public string $textContent;
/* Методы */
public __construct(string $version = "1.0", string $encoding = "")
public adoptNode(DOMNode $node): DOMNode|false
public append(DOMNode|string ...$nodes): void
public createAttribute(string $localName): DOMAttr|false
public createAttributeNS(?string $namespace, string $qualifiedName): DOMAttr|false
public createCDATASection(string $data): DOMCdataSection|false
public createComment(string $data): DOMComment
public createElement(string $localName, string $value = ""): DOMElement|false
public createElementNS(?string $namespace, string $qualifiedName, string $value = ""): DOMElement|false
public createEntityReference(string $name): DOMEntityReference|false
public createProcessingInstruction(string $target, string $data = ""): DOMProcessingInstruction|false
public createTextNode(string $data): DOMText
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 normalizeDocument(): void
public prepend(DOMNode|string ...$nodes): void
public registerNodeClass(string $baseClass, ?string $extendedClass): bool
public relaxNGValidate(string $filename): bool
public relaxNGValidateSource(string $source): 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::appendChild(DOMNode $node): DOMNode|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::cloneNode(bool $deep = false): DOMNode|false
public DOMNode::contains(DOMNode|DOMNameSpaceNode|null $other): bool
public DOMNode::getLineNo(): int
public DOMNode::getNodePath(): ?string
public DOMNode::getRootNode(array $options = null): DOMNode
public DOMNode::hasAttributes(): bool
public DOMNode::hasChildNodes(): bool
public DOMNode::insertBefore(DOMNode $node, ?DOMNode $child = null): DOMNode|false
public DOMNode::isDefaultNamespace(string $namespace): bool
public DOMNode::isEqualNode(?DOMNode $otherNode): bool
public DOMNode::isSameNode(DOMNode $otherNode): bool
public DOMNode::isSupported(string $feature, string $version): bool
public DOMNode::lookupNamespaceURI(?string $prefix): ?string
public DOMNode::lookupPrefix(string $namespace): ?string
public DOMNode::normalize(): void
public DOMNode::removeChild(DOMNode $child): DOMNode|false
public DOMNode::replaceChild(DOMNode $node, DOMNode $child): DOMNode|false
}

Свойства

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 (XXE).

validateOnParse

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

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

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

version

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

xmlEncoding

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

xmlStandalone

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

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 будет получен результат кодирования пустого объекта.

Содержание