Nokogiri:找到标签,获取属性并替换标签

时间:2014-03-20 16:10:06

标签: ruby nokogiri

我和Nokogiri合作,我再见了。我正在解析HTML文档以匹配某个占位符,匹配后我必须用一些生成的HTML替换小部件占位符。

我创建了这个方法:

doc = Nokogiri::HTML.fragment(raw)
matches = doc.xpath(".//widget")
if matches.present?
  matches.each do |match|
    media_replace(..)
else
  self.body = raw
end

我有一些比赛,每场比赛都有这个属性。

 matches.first.attributes
{"data_id"=>#(Attr:0x3fdd42e2cebc { name = "data_id", value = "5" }),
"data_type"=>#(Attr:0x3fdd42e2ce94 { name = "data_type", value = "gallery" })}

如何提取这些属性(图库和5)以将它们传递给我的media_replace方法? Media_replace方法返回给我一个' html':如何替换每个匹配'使用返回的HTML?

1 个答案:

答案 0 :(得分:1)

要从节点获取属性值,您可以使用[] method。例如:

media_replace(match['data_id'], match['data_gallery'])

要替换节点,请使用replaceswap方法(假设media_replace返回字符串或其他兼容对象):

new_html = media_replace(...)
match.replace(new_html)