У меня есть HTML, который нужно преобразовать, заменив некоторые теги другими тегами.
Я не знаю об этих тегах, потому что они будут из базы данных. Итак, методы set_attribute
или name
для Nokogiri мне не подходят.
Мне нужно сделать это так, как в этом псевдокоде:
def preprocess_content
doc = Nokogiri::HTML( self.content )
doc.css("div.to-replace").each do |div|
# "get_html_text" will obtain HTML from db. It can be anything, even another tags, tag groups etc.
div.replace self.get_html_text
end
self.content = doc.css("body").first.inner_html
end
I найдено метод Nokogiri :: XML :: Node :: replace
. Я думаю, что это правильное направление.
Этот метод ожидает некоторый параметр node_or_tags
.
Какой метод я должен использовать, чтобы создать новый узел из текста и заменить текущий на него?
Примерно так:
doc.css("div.to-replace").each do |div|
new_node = doc.create_element "span"
new_node.inner_html = self.get_html_text
div.replace new_node
end