J'ai un HTML, qui devrait être transformé, ayant des balises remplacées par d'autres balises.Trouver et remplacer des nœuds HTML entiers avec Nokogiri
Je ne connais pas ces balises, car elles proviendront de db. Donc, set_attribute
ou name
les méthodes de Nokogiri ne me conviennent pas.
je besoin de le faire, d'une manière, comme dans ce pseudo-code:
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
Je trouve la méthode Nokogiri::XML::Node::replace
. Je pense que c'est la bonne direction.
Cette méthode attend un paramètre node_or_tags
.
Quelle méthode devrais-je utiliser pour créer un nouveau nœud à partir du texte et remplacer celui-ci par celui-ci?
Il does't fonctionne pour moi. Je gen une erreur: "pas d'analyse contextuelle sur les nœuds non liés". Il se plaint de cette façon pour la ligne, où la propriété "inner_html" est définie – AntonAL
Je viens de tester, et cela fonctionne dans mon environnement. Essayez de remplacer 'new_node.inner_html =' par 'new_node.content =' et vérifiez s'il y a des erreurs, s'il vous plaît. Cela devrait. –
Merci, je l'ai compris. Le problème était - modifiant mais élément non lié au DOM. Nous devons d'abord remplacer, puis modifier. C'est bien, mais j'ai fait face à un problème plus confus - aucun balisage ne peut être inséré en remplacement. Par exemple, quand je dis "new_node.inner_html ="