Модель объекта документа
Возвращённое libxml-parse-html-region (и другие функции парсинга XML) дерево DOM представляет собой структуру дерева, где каждый узел имеет имя узла (называемое тэгом), необязательный список пар атрибутов ключ/значение и список дочерних узлов. Дочерние узлы являются либо строками, либо объектами DOM.
(body ((width . "101")) (div ((class . "thing")) "Foo" (div nil "Yes")))
- Функция: dom-node тэг &необязательные атрибуты &остальные дочерние элементы
Эта функция создаёт узел DOM типа тэг. Если заданы, атрибуты должны быть списком пар ключ/значение. Если заданы, дочерние элементы должны быть узлами DOM.
Для работы со структурой можно использовать следующие функции. Каждая функция принимает узел DOM или список узлов. В последнем случае используется только первый узел в списке.
Простые методы доступа:
dom-tag node-
Возвращает тэг (также называемый «именем узла») узла.
dom-attr node attribute-
Возвращает значение атрибута в узле. Типичное использование:
(dom-attr img 'href) => "https://fsf.org/logo.png"
dom-children node-
Возвращает все дочерние элементы узла.
dom-non-text-children node-
Возвращает все дочерние элементы узла, которые не являются строками.
dom-attributes node-
Возвращает список пар ключ/значение атрибутов узла.
dom-text node-
Возвращает все текстовые элементы узла как конкатенированную строку.
dom-texts node-
Возвращает все текстовые элементы узла, а также текстовые элементы всех дочерних узлов рекурсивно, как конкатенированную строку. Эта функция также принимает необязательный разделитель, который будет вставлен между текстовыми элементами.
dom-parent dom node-
Возвращает родительский узел узла в dom.
dom-remove dom nodeУдаляет узел из dom.
Ниже приведены функции для изменения DOM.
dom-set-attribute node attribute value-
Устанавливает атрибут узла в значение.
dom-remove-attribute node attribute-
Удаляет атрибут из узла.
dom-append-child node child-
Добавляет дочерний элемент в качестве последнего дочернего элемента узла.
dom-add-child-before node child before-
Добавляет дочерний элемент в список дочерних элементов узла перед узлом перед. Если перед это
nil, делает дочерний элемент первым дочерним элементом. dom-set-attributes node attributesЗаменяет все атрибуты узла новым списком пар ключ/значение.
Следующие функции предназначены для поиска элементов в DOM. Все они возвращают списки соответствующих узлов.
dom-by-tag dom tag-
Возвращает все узлы в dom, которые имеют тип тэг. Типичное использование:
(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, для которых предикат возвращает не-
nilзначение. Предикат вызывается с узлом, который будет протестирован, в качестве параметра. 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-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Document-Object-Model.html