Emacs 可编译为内置 libxml2 支持的版本。
若当前 Emacs 会话中启用了内置 libxml2 支持,
该函数返回非 nil 值。
当 libxml2 支持可用时,可使用以下函数将 HTML 或 XML 文本解析为 Lisp 对象树。
该函数将 start 和 end 之间的文本解析为 HTML,并返回表示 HTML 解析树(parse tree) 的列表。 该函数可鲁棒地处理语法错误,以适配实际场景中的 HTML 文本。
若 start 或 end 为 nil,则分别默认使用
point-min 和 point-max 的值。
可选参数 base-url 若非 nil,
将用于 libxml2 库输出的警告和错误信息,
但 Emacs 目前调用该库时会禁用错误和警告输出,因此该参数暂未启用。
若可选参数 discard-comments 非 nil,
则所有顶级注释都会被丢弃。(该参数已过时,
将在未来的 Emacs 版本中移除。如需移除注释,
请在调用解析函数前使用 xml-remove-comments 工具函数处理数据。)
在解析树中,每个 HTML 节点由一个列表表示:列表第一个元素是表示节点名称的符号, 第二个元素是节点属性的关联列表(alist),其余元素为子节点。
以下示例展示这一结构。对于如下(格式不规范的)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"))))
该函数将 dom 中已解析的 HTML 渲染到当前
缓冲区中。参数 dom 应为 libxml-parse-html-region 生成的列表。
例如,EWW in The Emacs Web Wowser Manual 就使用了此函数。
该函数与 libxml-parse-html-region 功能相同,
区别在于它将文本解析为 XML(而非 HTML),因此对语法要求更严格。