Nokogiri去除所有属性

5

I have this html markup:

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

我希望你能翻译这个:

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

我该如何使用Nokogiri进行操作?


你写了什么?我们可以通过从你编写的代码开始工作来更好地帮助你,而不是从头开始编写与你所写内容毫不相关的代码,然后你不得不强行将我们的建议放入其中。 - the Tin Man
@theTinMan,我本来想用xpath来处理它,但由于对它的知识比较局限,我不知道可以使用splat。而且我认为可能有一些特殊的Nokogiri函数在我的Google搜索中被忽略了,所以这次决定不记录我的研究过程。 - Stephan
2个回答

14
require 'nokogiri'
doc = Nokogiri::HTML('<div class="item"><a href="www"></a></div>')
  1. 您可以通过 xpath 删除所有属性:

  2. doc.xpath('//@*').remove
    
  3. 或者,如果您需要执行更复杂的操作,有时使用以下方法遍历所有元素会更容易:

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

1
那对于所有内容都适用,除了XML命名空间属性(xmlns=)。您可以通过doc.remove_namespaces!轻松地将它们去掉!(包括感叹号,否则它不会真正删除它们)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接