Spec-Zone.ru › Elisp

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

Возвращённое 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

Spec-Zone.ru

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