我和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" })}
如何提取这些属性(gallery和5)以将它们传递给我的media_replace方法?Media_replace方法返回给我一个'html':我怎么能用返回的html替换每个'匹配' ?
要从节点获取属性值,可以使用[]
方法。例如:
media_replace(match['data_id'], match['data_gallery'])
要替换节点,使用replace
或swap
方法(假设media_replace
返回字符串或其他兼容对象):
new_html = media_replace(...)
match.replace(new_html)