Spec-Zone.ru › Elisp

Объектная модель документа

DOM, возвращаемая libxml-parse-html-region (и другими функциями разбора XML), представляет собой древовидную структуру, в которой у каждого узла есть имя узла (называемое тегом), необязательный список пар ключ/значение атрибутов, а также список дочерних узлов. Дочерние узлы — это либо строки, либо объекты DOM.

(body ((width . "101"))
 (div ((class . "thing"))
  "Foo"
  (div nil
   "Yes")))
Функция: dom-node tag &optional attributes &rest children

Эта функция создаёт узел DOM типа tag. Если указан параметр attributes, он должен представлять собой список пар ключ/значение. Если указан параметр children, он должен содержать узлы DOM.

Для работы с этой структурой можно использовать следующие функции. Каждая функция принимает узел DOM или список узлов. Во втором случае используется только первый узел списка.

Простые функции доступа:

dom-tag node

Возвращает тег узла (также называемый «именем узла»).

dom-attr node attribute

Возвращает значение attribute в узле. Например, часто используется так:

(dom-attr img 'href)
=> "https://fsf.org/logo.png"
dom-children node

Возвращает все дочерние узлы узла.

dom-non-text-children node

Возвращает все дочерние узлы узла, кроме строк.

dom-attributes node

Возвращает список пар ключ/значение атрибутов узла.

dom-inner-text node

Возвращает все текстовые элементы узла, а также текстовые элементы всех его дочерних узлов рекурсивно, в виде объединённой строки.

dom-parent dom node

Возвращает родительский узел node в dom.

dom-remove dom node

Удаляет node из dom.

Следующие функции позволяют изменять DOM.

dom-set-attribute node attribute value

Задаёт атрибуту attribute узла значение value.

dom-remove-attribute node attribute

Удаляет атрибут attribute из node.

dom-append-child node child

Добавляет child в конец списка дочерних узлов node.

dom-add-child-before node child before

Добавляет child в список дочерних узлов node перед узлом before. Если before — nil, child становится первым дочерним узлом.

dom-set-attributes node attributes

Заменяет все атрибуты узла новым списком пар ключ/значение.

Следующие функции предназначены для поиска элементов в DOM. Все они возвращают списки соответствующих узлов.

dom-by-tag dom tag

Возвращает все узлы в dom типа tag. Типичный пример использования:

(dom-by-tag dom 'td)
=> '((td ...) (td ...) (td ...))
dom-by-class dom match

Возвращает все узлы в dom, имена классов которых соответствуют match, являющемуся регулярным выражением.

dom-by-style dom style

Возвращает все узлы в dom, стили которых соответствуют match, являющемуся регулярным выражением.

dom-by-id dom style

Возвращает все узлы в dom, идентификаторы которых соответствуют match, являющемуся регулярным выражением.

dom-search dom predicate

Возвращает все узлы в dom, для которых predicate возвращает значение, отличное от nil. Функция predicate вызывается с проверяемым узлом в качестве аргумента.

dom-strings dom

Возвращает все строки в dom.

Вспомогательные функции:

dom-pp dom &optional remove-empty

Выводит dom в отформатированном виде в текущей позиции. Если remove-empty, текстовые узлы, содержащие только пробельные символы, не выводятся.

dom-print dom &optional pretty xml

Выводит dom в текущей позиции. Если xml не равен nil, выводит содержимое в формате XML; в противном случае — в формате HTML. Если pretty не равен nil, форматирует отступы HTML/XML с учётом структуры документа.

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Document-Object-Model.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API