2013-03-12 85 views
0

我有以下的HTML和我试图让脚本节点的评论:Nokogiri查询包含在JavaScript中的HTML注释?

<html> 
    <head> 
     <script language="JavaScript" type="text/javascript"> 
      <!-- 
      url = 'http://someurl.com'; 
      --> 
     </script> 
    </head> 
</html> 

利用这一点,我拿到剧本的节点:

javascript_code = doc.xpath("/html/head/script") 

但是,加入comments() XPath的时候,它没有返回值:

javascript_code = doc.xpath("/html/head/script/comment()") 

我不知道为什么,这是行不通的,现在看来似乎应该是简单的。是否有可能获得评论?

回答

2

如果您将文档解析为XML,它将找到该评论。但是,如果将它解析为HTML,Nokogiri会将脚本标记的全部内容放入cdata部分。你可以解析出来。

require 'rubygems' 
require 'nokogiri' 

body = DATA.read 

doc = Nokogiri::XML(body) 
puts doc.search('/html/head/script/comment()').text.strip 
# puts "url = 'http://someurl.com';" 

doc = Nokogiri::HTML(body) 
puts doc.search('/html/head/script').text.strip 
# puts "<!--\n   url = 'http://someurl.com';\n   -->" 


__END__ 
<html> 
    <head> 
     <script language="JavaScript" type="text/javascript"> 
      <!-- 
      url = 'http://someurl.com'; 
      --> 
     </script> 
    </head> 
</html>