Ho un HTML, che dovrebbe essere trasformato, con alcuni tag sostituiti con altri tag.Trova e sostituisci interi nodi HTML con Nokogiri
Non conosco questi tag, perché verranno da db. Quindi, i metodi set_attribute
o name
di Nokogiri non sono adatti per me.
ho bisogno di farlo, in un certo senso, come in questo pseudo-codice:
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
ho trovato Nokogiri::XML::Node::replace
metodo. Penso che sia la giusta direzione.
Questo metodo prevede alcuni parametri node_or_tags
.
Quale metodo devo utilizzare per creare un nuovo nodo dal testo e sostituire quello corrente con esso?
E does't lavori per me. Ho generato un errore: "nessuna analisi contestuale sui nodi non collegati". Si lamenta in questo modo per la linea, dove la proprietà "inner_html" è impostata su – AntonAL
che ho appena testato e funziona nel mio ambiente. Prova a sostituire 'new_node.inner_html =' con 'new_node.content =' e ricontrolla gli errori, per favore. Dovrebbe. –
Grazie, ho capito. Il problema era: modificare l'elemento ancora non collegato al DOM. Dobbiamo prima sostituire e poi modificare. È bello, ma ho affrontato un problema più confuso - non è possibile inserire alcun markup in sostituzione. Ad esempio, quando dico "new_node.inner_html ="