在本地HTML文件中插入元素

时间:2010-10-15 06:13:01

标签: ruby nokogiri

我正在尝试编写一个读取本地HTML文件的Ruby脚本,并在某个#divid之后插入一些HTML(基本上是一个字符串)。

我有点像菜鸟,所以请不要犹豫,在这里输入一些代码。

由于

2 个答案:

答案 0 :(得分:1)

我能够通过以下方式实现这一目标......

doc = Nokogiri::HTML(open('file.html'))
data = "<div>something</div>"
doc.children.css("#divid").first.add_next_sibling(data)

然后(结束)用相同的数据写文件......

File.open("file.html", 'w') {|f| f.write(doc.to_html) }

答案 1 :(得分:0)

这是更正确的方法:

html = '<html><body><div id="certaindivid">blah</div></body></html>'
doc = Nokogiri::HTML(html)
doc.at_css('div#certaindivid').add_next_sibling('<div>junk goes here</div>')

print doc.to_html 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<div id="certaindivid">blah</div>
<div>junk goes here</div>
</body></html>

请注意使用.at_css(),它会找到目标节点的第一个匹配项并将其返回,从而避免获取节点集,并使您无需获取.first()节点。