2014-12-21 2 views
4

У меня есть этот HTML код:Nokogiri полоса все атрибуты

<div class="item"><a href="www"></a></div> 

, и я хотел бы получить это:

<div><a></a></div> 

Как я могу сделать это с Nokogiri?

+0

Что вы написали? Мы можем помочь вам лучше, работая над кодом, который вы написали, чем нам начинать с нуля, писать код, который абсолютно не имеет отношения к тому, что у вас есть, и вы должны заставить наши предложения встать на свои места. –

+0

@theTinMan, я пытался сделать это через xpath, но благодаря моему довольно ограниченному знанию этого я не знал, что могу использовать splat. И я думал, что может быть специальная функция Nokogiri, которую я пропустил в своих поисковых системах Google, поэтому я решил не записывать свои исследования на этот раз. – Stephan

ответ

8
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 
    
0

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