【发布时间】:2010-12-02 14:50:03
【问题描述】:
有很多例子说明如何使用 Ruby 从文档中去除 HTML 标签,Hpricot 和 Nokogiri 有 inner_text 方法,可以轻松快速地删除所有 HTML。
我想做的是相反的,从 HTML 文档中删除所有文本,只留下标签及其属性。
我考虑循环通过将文档设置 inner_html 设置为 nil 但实际上您必须反向执行此操作,因为第一个元素(根)具有整个文档其余部分的 inner_html,所以理想情况下我必须从最里面的元素开始,将 inner_html 设置为 nil,同时向上移动通过祖先。
有没有人知道一个巧妙的小技巧可以有效地做到这一点?我在想也许正则表达式可能会做到这一点,但可能不如 HTML 标记器/解析器效率高。
【问题讨论】:
-
您将不得不处理不良标记吗? (未转义的实体等)
-
有可能 - 我正在处理的标记来自最终用户,因此不能依赖。
标签: html ruby nokogiri hpricot