Say, nous avons un HTML, dans lequel, tous les ...problèmes étranges avec Nokogiri
<div class="replace-me">
</div>
... doit être remplacé par
<video src='my_video.mov'></video>
Le code est le suivant:
doc.css("div.replace-me").each do |div|
div.replace "<video src='my_video.mov'></video>"
end
C'est simple, mais, malheureusement, ça ne marche pas pour moi. accidents Nokogiri avec erreur follwing:
undefined method
children' for nil:NilClass /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/whiny_nil.rb:52:in
method_missing' /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/html/document_fragment.rb:16:ininitialize' /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:424:in
new' /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:424:infragment' /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:776:in
coerce' /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:331:in `replace'
Remplacement avec div primitive ne fonctionne:
doc.css("div.replace-me").each do |div|
div.replace "<div>Test</div>"
end
Est-ce un bug Nokogiri, ou je fais quelque chose de mal?
PS: le même problème avec « add_child », « inner_html » et d'autres normalisateurs à cet effet
OK. Passons à cet article :) Il semble fonctionner avec le remplacement. Mais un autre problème - quand j'essaie de sauvegarder la partie du document modifiée sur self.content, je n'ai que les parties qui ont remplacé les anciennes. Mais d'autres éléments, qui étaient quelque part autour, et n'ont pas été modifiés (en self.content) - sont partis ... – AntonAL
Très étrange. J'essaie de comprendre pourquoi. Pourriez-vous montrer votre source HTML avant tout remplacement? –