Объектная модель документа (DOM), возвращаемая libxml-parse-html-region (и
другими функциями разбора XML), представляет собой древовидную структуру, в которой
каждый узел имеет имя узла (называемое тег), необязательный список
ключ/значение атрибутов, а затем список дочерних узлов. Дочерние
узлы могут быть либо строками, либо объектами DOM.
(body ((width . "101")) (div ((class . "thing")) "Foo" (div nil "Yes")))
Эта функция создает узел 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-text nodeВозвращает все текстовые элементы узла в виде конкатенированной строки.
dom-texts 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
индексируется логически.