Ruby 如何使用Nokogiri获取倒数第二个脚本结束标记
我需要使用Nokogiri获得倒数第二个脚本结束标记 示例代码:Ruby 如何使用Nokogiri获取倒数第二个脚本结束标记,ruby,nokogiri,Ruby,Nokogiri,我需要使用Nokogiri获得倒数第二个脚本结束标记 示例代码: <head> <script src="first.js"></script> <script src="second.js"></script> <!-- How to place some scripts here? --> <script> // init load </script&
<head>
<script src="first.js"></script>
<script src="second.js"></script>
<!-- How to place some scripts here? -->
<script>
// init load
</script>
</head>
我试过像doc.css'/html/head/script'[-2]这样的代码。但是,它会将代码放在标记中。由于您没有给我们预期的结果,所以不完全清楚您想要什么,但这似乎是您所说的:
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<html>
<head>
<script src="first.js"></script>
<script src="second.js"></script>
<!-- How to place some scripts here? -->
<script>
// init load
</script>
</head>
</html>
EOT
doc.css('script')[-2].add_next_sibling("\n<script src='new_script.js'></script>")
其结果是:
doc.to_html
# => "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n" +
# "<html>\n" +
# " <head>\n" +
# "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" +
# " <script src=\"first.js\"></script>\n" +
# " <script src=\"second.js\"></script>\n" +
# "<script src=\"new_script.js\"></script>\n" +
# " <!-- How to place some scripts here? -->\n" +
# " <script>\n" +
# " // init load\n" +
# " </script>\n" +
# " </head>\n" +
# "</html>\n"
Nokogiri的方法非常有用。我建议你多读几遍
Nokogiri不知道结束标记。解析后,它知道有一个对象,并且该对象在层次结构中有同级,因此我们可以搜索这些对象,然后在本例中插入一个新节点。如果您要求它输出HTML,则根据HTML规则,它将提供结束标记,即使它们最初不在那里。请参阅和链接的页面和。没有最低限度的代码示例来演示您想要的内容,也没有预期的结果。