我有一些使用Nokogiri的代碼,我試圖在沒有得到評論的情況下獲得inner_html
。從inner_html刪除評論
html = Nokogiri::HTML(open(@sql_scripts_url[1])) #using first value of the array
html.css('td[class="ms-formbody"]').each do |node|
puts node.inner_html # prints comments
end
我有一些使用Nokogiri的代碼,我試圖在沒有得到評論的情況下獲得inner_html
。從inner_html刪除評論
html = Nokogiri::HTML(open(@sql_scripts_url[1])) #using first value of the array
html.css('td[class="ms-formbody"]').each do |node|
puts node.inner_html # prints comments
end
既然你沒有提供任何樣本HTML或所需的輸出,這裏有一個通用的解決方案:
您可以選擇使用comment()
節點測試中的XPath SGML的意見;您可以通過在所有評論節點上調用.remove
將它們從文檔中刪除。說明:
require 'nokogiri'
doc = Nokogiri.XML('<r><b>hello</b> <!-- foo --> world</r>')
p doc.inner_html #=> "<b>hello</b> <!-- foo --> world"
doc.xpath('//comment()').remove
p doc.inner_html #=> "<b>hello</b> world"
請注意,上述修改文件破壞性地刪除評論。如果您想保留原始文件未經修改的,你可以交替做:
class Nokogiri::XML::Node
def inner_html_reject(xpath='.//comment()')
dup.tap{ |shadow| shadow.xpath(xpath).remove }.inner_html
end
end
doc = Nokogiri.XML('<r><b>hello</b> <!-- foo --> world</r>')
p doc.inner_html_reject #=> "<r><b>hello</b> world</r>"
p doc.inner_html #=> "<r><b>hello</b> <!-- foo --> world</r>"
最後要注意的是,如果你不需要的標記,只是要求對於text
本身不包含HTML註釋:
p doc.text #=> "hello world"
請提供一個示例HTML代碼段,以及在按摩後您想要的結果字符串。 – Phrogz
我只需要從我的html中刪除像「<! - WHAT EVER - >」這樣的HTML註釋。我使用了strip並且它工作。我不知道這是否正確。 – Maverick