You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Emacs Lisp格式的HTML DOM表示转换回HTML源码

解决方法

你之前使用的shr相关函数确实是用来将HTML渲染为富文本预览,不用于生成HTML源码,直接使用Emacs内置dom.el库提供的专用转换函数即可:

1. 直接转换DOM对象

如果你已经将解析得到的DOM保存在变量中,调用dom-to-html即可得到对应的HTML字符串:

;; 示例DOM结构
(setq sample-dom '(html nil
                   (head nil)
                   (body nil)))

;; 转换为HTML字符串
(dom-to-html sample-dom)

如果需要将生成的HTML插入当前缓冲区,改为调用:

(insert (dom-to-html sample-dom))

2. 转换缓冲区中已打印的DOM文本

如果你的DOM结构已经以Lisp文本的形式存在于缓冲区中,选中对应区域后执行以下代码即可完成转换并插入结果:

(insert (dom-to-html (read (buffer-substring (region-beginning) (region-end)))))

3. 生成带缩进的格式化HTML

如果你需要输出格式化、带缩进的易读HTML,可直接使用dom-print函数,它会自动把格式化后的HTML插入当前缓冲区:

(dom-print sample-dom)

内容的提问来源于stack exchange,提问作者wos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:15:07