tengo un código HTML, que debe ser transformado, reemplazando algunas etiquetas por otras.Busque y reemplace nodos completos de HTML con Nokogiri
No sé acerca de estas etiquetas, porque vendrán de db. Por lo tanto, los métodos set_attribute
o name
de Nokogiri no son adecuados para mí.
tengo que hacerlo, de alguna manera, como en este pseudo-código:
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
He encontrado Nokogiri::XML::Node::replace
método. Creo que es la dirección correcta.
Este método espera algún parámetro node_or_tags
.
¿Qué método debo usar para crear un nuevo nodo del texto y reemplazar el actual con él?
Se does't funciona para mí. I gen una errror: "sin análisis contextual en nodos no vinculados". Se queja de esta manera por la línea, donde la propiedad "inner_html" está configurada en – AntonAL
que acabo de probar, y funciona en mi entorno. Intenta reemplazar 'new_node.inner_html =' con 'new_node.content =' y comprueba si hay errores, por favor. Debería. –
Gracias, lo he descubierto. El problema era - modificar el elemento aún no vinculado al DOM. Primero debemos reemplazar y luego modificar. Es bueno, pero me enfrenté a un problema más confuso, no se puede insertar ningún marcado como reemplazo. Por ejemplo, cuando digo "new_node.inner_html ="