Объектная модель документа
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