ruby-on-rails - Hpricot 元素交集

标签 ruby-on-rails ruby parsing hpricot

我想从 HTML 页面(实际上是 tinymce 用户输入)中删除所有不符合特定条件(class = "int"或 class = "ext")的图像,我正在努力寻找正确的方法。这就是我目前所做的:

hbody = Hpricot(input)
@internal_images = hbody.search("//img[@class='int']")
@external_images = hbody.search("//img[@class='ext']")

但我不知道如何找到类具有错误值(不是“int”或“ext”)的图像。

我还必须遍历元素以检查非标准 html 的其他属性(我使用它们来设置内部值,例如我在属性 dbsrc 中设置的 DB id)。我也可以访问这些属性吗?有没有办法在某些元素(在 hpricot 搜索结果中)不符合我的条件时删除它们?

感谢您的帮助!

最佳答案

>> doc = Hpricot.parse('<html><img src="foo" class="int" /><img src="bar" bar="42" /><img src="foobar" class="int"></html>')
=> #<Hpricot::Doc {elem <html> {emptyelem <img class="int" src="foo">} {emptyelem <img src="bar" bar="42">} {emptyelem <img class="int" src="foobar">} </html>}>
>> doc.search("img")[1][:bar]
=> "42"
>> doc.search("img") - doc.search("img.int")
=> [{emptyelem img src"bar" bar"42"}]

一旦您从搜索中获得结果,您就可以使用正常的数组操作。非标准属性可通过 [] 访问。

关于ruby-on-rails - Hpricot 元素交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1058716/

相关文章:

ruby - 你如何使用拆分和扫描来解析 ruby​​ 中的 URI?

ruby - 为什么 Ruby 的标准库有 DateTime 类?

json - iOS JSON解析

parsing - 如何: parse a string 'mm/yyyy' into a date in PHP5. 3?

ruby-on-rails - 如何更改列的顺序

ruby-on-rails - 自定义验证器如何自动包含到模型中

ruby-on-rails - Rails 4 : link_to submit form using ajax, 如何模仿post请求?

java - 使用 JSOUP 解析 HTMl - 需要特定模式

ruby-on-rails - Rails 迁移中的方法名称

ruby-on-rails - merge_pdf 不合并 pdf