Разбор 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