HTML | Разбор DOM

HTML | Разбор DOM

Интерфейс DOMParser позволяет авторам создавать новые объекты Document путём разбора строк в формате HTML или XML.

Для веб-разработчиков (не нормативно)

parser = new DOMParser()

Создает новый объект DOMParser.

document = parser.parseFromString(stringtype)

Разбирает строку string с помощью анализатора HTML или XML в зависимости от типа type и возвращает результирующий объект документа Document. Тип type может быть «text/html» (который вызовет синтаксический анализатор HTML) или любой из «text/xml«, «application/xml«, «application/xhtml+xml» или «image/svg+xml» (который вызовет синтаксический анализатор XML).

Для синтаксического анализатора XML, если строка string не может быть проанализирована, возвращаемый документ Document будет содержать элементы, описывающие результирующую ошибку.

Обратите внимание, что элементы скрипта script не оцениваются во время синтаксического анализа, и результирующий документ всегда будет иметь кодировку UTF-8.

Значения типа type, отличные от приведенных выше, вызовут исключение TypeError.

 

Примечание

Дизайн DOMParser как класса, который необходимо сконструировать, а затем вызвать его метод parseFromString(), является досадным историческим артефактом. Если бы мы разрабатывали эту функциональность сегодня, это была бы отдельная функция.

 

[Exposed=Window]
interface DOMParser {
  constructor();

  [NewObject] Document parseFromString(DOMString string, DOMParserSupportedType type);
};

enum DOMParserSupportedType {
  "text/html",
  "text/xml",
  "application/xml",
  "application/xhtml+xml",
  "image/svg+xml"
};

 

Шаги конструктора new DOMParser() ничего не делают.

Шаги метода parseFromString(string, type):

1. Пусть документ document будет новым объектом Document, тип содержимого которого является type, а URL-адрес — это URL-адрес связанного Document, релевантного глобального объекта, объекта контекста this.

Примечание

Кодировка документа будет оставлена по умолчанию, UTF-8. В частности, любые объявления XML или метаэлементы meta, найденные при синтаксическом анализе строки string, не будут иметь никакого эффекта.

2. Переключение типа type:

«text/html»

1. Установите тип документа на «html».

2. Создайте синтаксический анализатор HTMLparser, связанный с document.

3. Поместите строку string во входной поток для парсера parser. Достоверность кодирования не имеет значения.

4. Запустите parser и дайте ему поработать, пока он не израсходует все символы, только что вставленные во входной поток.

Примечание

Это может изменить режим документа.

Примечание

Поскольку документ не имеет контекста просмотра, сценарии отключены.

 

В противном случае

1. Создайте синтаксический анализатор XMLparser, связанный с документом document, и с отключенной поддержкой XML-скриптов.

2. Разобрать строку string с помощью парсера parser.

3. Если предыдущий шаг привел к ошибке правильного формата XML или правильному формату пространства имен XML, тогда:

3.1 Утверждено: у документа document нет дочерних узлов.

3.2 Пусть root будет результатом создания элемента данного документа document, «parsererror» и «http://www.mozilla.org/newlayout/xml/parsererror.xml».

3.3 При необходимости добавьте атрибуты или дочерние элементы в корень, чтобы описать природу ошибки синтаксического анализа.

3.4 Добавить корень root к документу document.

3. Вернуть документ document.

 

Информационные ссылки

HTML | Оглавление

Стандарт HTML — Раздел «DOM parsing» — https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization