When Emacs is compiled with libxml2 support, the following functions are available to parse HTML or XML text into Lisp object trees.
libxml-parse-html-regionstart end &optional base-url discard-comments
This function parses the text between start and end as HTML, and returns a list representing the HTML parse tree. It attempts to handle real-world HTML by robustly coping with syntax mistakes.
The optional argument base-url, if non-
nil, should be a
string specifying the base URL for relative URLs occurring in links.
If the optional argument discard-comments is non-
then the parse tree is created without any comments.
In the parse tree, each HTML node is represented by a list in which the first element is a symbol representing the node name, the second element is an alist of node attributes, and the remaining elements are the subnodes.
The following example demonstrates this. Given this (malformed) HTML document:
<html><head></head><body width=101><div class=thing>Foo<div>Yes
A call to
libxml-parse-html-region returns this DOM
(document object model):
(html nil (head nil) (body ((width . "101")) (div ((class . "thing")) "Foo" (div nil "Yes"))))
This function renders the parsed HTML in dom into the current
buffer. The argument dom should be a list as generated by
libxml-parse-html-region. This function is, e.g., used by
EWW in The Emacs Web Wowser Manual.
libxml-parse-xml-regionstart end &optional base-url discard-comments
This function is the same as
that it parses the text as XML rather than HTML (so it is stricter
|• Document Object Model:||Access, manipulate and search the DOM.|