Нокогири лишить всех атрибутов
У меня есть HTML-разметка:
<div class="item"><a href="www"></a></div>
и я хотел бы получить это:
<div><a></a></div>
Как я могу сделать это с Nokogiri?
2 ответа
Решение
require 'nokogiri'
doc = Nokogiri::HTML('<div class="item"><a href="www"></a></div>')
Вы можете удалить все атрибуты с помощью
xpath
:doc.xpath('//@*').remove
Или, если вам когда-нибудь понадобится сделать что-то более сложное, иногда проще обойти все элементы с помощью:
doc.traverse do |node| node.keys.each do |attribute| node.delete attribute end end
Это работает для всех атрибутов пространства имен, кроме xml (xmlns=). Вы также можете легко удалить их через doc.remove_namespaces! (включите восклицательный знак, иначе он не удалит их)