如何将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
相关产品推荐
相关产品推荐

