Нокогири лишить всех атрибутов

У меня есть 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>')
  1. Вы можете удалить все атрибуты с помощью xpath:

    doc.xpath('//@*').remove
    
  2. Или, если вам когда-нибудь понадобится сделать что-то более сложное, иногда проще обойти все элементы с помощью:

    doc.traverse do |node| 
      node.keys.each do |attribute|
        node.delete attribute
      end
    end
    

Это работает для всех атрибутов пространства имен, кроме xml (xmlns=). Вы также можете легко удалить их через doc.remove_namespaces! (включите восклицательный знак, иначе он не удалит их)

Другие вопросы по тегам