使用 Hpricot 解析 HTML、XHTML、XML 与 RSS 提要
1. 后处理 HTML 输出
1.1 问题描述
在使用 Ruby Web 框架(如 Ruby on Rails、Merb 或 Nitro)时,有许多页面会生成表格,希望所有表格在浏览器渲染时具有斑马线效果(偶数行显示浅蓝色)。但尝试过使用客户端 JavaScript 代码,由于部分表格较大,页面加载时间过长;手动确保表格条纹效果又因创建表格的机制过多而变得繁琐。不过,为需要条纹效果的表格添加特定类(如 zebra)并不困难。
1.2 解决方案
使用 Hpricot 对渲染后的页面进行后处理,为每隔一行设置适当的样式,再通过 CSS 样式表引入该样式。以下是 Ruby on Rails 的示例代码:
class ApplicationController < ActionController::Base
after_filter :zebra
def zebra
doc = Hpricot(response.body)
doc.search("table.zebra tbody tr:nth-child(even)").add_class("even")
response.body = doc.to_s
end
end
CSS 样式如下:
.zebra .even {
background-color: #ddf;
}
Hpricot解析HTML与RSS实战
超级会员免费看
订阅专栏 解锁全文
2113

被折叠的 条评论
为什么被折叠?



