Ruby Nokogiri:查找标记,获取属性并替换标记

Ruby Nokogiri:查找标记,获取属性并替换标记,ruby,nokogiri,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 我有一些匹配项,每个匹配

我和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\u replace方法返回给我一个“html”:我如何用返回的html替换每个“匹配项”?

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

media_replace(match['data_id'], match['data_gallery'])
要替换节点,请使用或方法(假设
media\u replace
返回字符串或其他兼容对象):


我想创建一个html片段来替换Nokogiri,所以我希望它是一个兼容的对象@它可以是“一个
Nokogiri::XML::Node
,一个
::DocumentFragment
,一个
::NodeSet
,或者一个包含标记的字符串”-参见文档。
new_html = media_replace(...)
match.replace(new_html)