使用 Hpricot 解析 HTML、XHTML 和 RSS 数据
1. 后处理 HTML 输出
1.1 问题描述
在使用 Ruby 网络框架(如 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;
超级会员免费看
订阅专栏 解锁全文
2109

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



