Spec-Zone.ru › Elisp

Разбор HTML и XML

Emacs можно скомпилировать с поддержкой встроенной библиотеки libxml2.

Функция: libxml-available-p

Эта функция возвращает ненулевое значение, если поддержка встроенной библиотеки libxml2 доступна в этой сессии Emacs.

Когда поддержка libxml2 доступна, можно использовать следующие функции для разбора текста HTML или XML в деревья объектов Lisp.

Функция: libxml-parse-html-region start end &optional base-url discard-comments

Эта функция разбирает текст между start и end как HTML и возвращает список, представляющий дерево разбора HTML. Она пытается обрабатывать реальный HTML, надёжно справляясь с синтаксическими ошибками.

Необязательный аргумент base-url, если он не nil, должен быть строкой, указывающей базовый URL для относительных URL, встречающихся в ссылках.

Если необязательный аргумент discard-comments имеет ненулевое значение, все комментарии верхнего уровня отбрасываются. (Этот аргумент устарел и будет удалён в будущих версиях Emacs. Чтобы удалить комментарии, используйте функцию xml-remove-comments для обработки данных перед вызовом функции разбора.)

В дереве разбора каждый узел HTML представлен списком, в котором первый элемент — символ, представляющий имя узла, второй элемент — ассоциативный список атрибутов узла, а оставшиеся элементы — подузлы.

Следующий пример демонстрирует это. Учитывая этот (неправильный) HTML-документ:

<html><head></head><body width=101><div class=thing>Foo<div>Yes

Вызов функции libxml-parse-html-region возвращает эту модель объекта документа (DOM):

(html nil
 (head nil)
 (body ((width . "101"))
  (div ((class . "thing"))
   "Foo"
   (div nil
    "Yes"))))
Функция: shr-insert-document dom

Эта функция отображает разобранный HTML в dom в текущий буфер. Аргумент dom должен быть списком, созданным функцией libxml-parse-html-region. Эта функция, например, используется библиотекой EWW в Справочнике по Emacs Web Wowser.

Функция: libxml-parse-xml-region start end &optional base-url discard-comments

Эта функция аналогична libxml-parse-html-region, за исключением того, что она анализирует текст как XML, а не как HTML (поэтому она более строго проверяет синтаксис).

• Модель объекта документа Доступ, манипулирование и поиск в модели объекта документа (DOM).

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/Parsing-HTML_002fXML.html

Spec-Zone.ru

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