2010-10-15 62 views
0

我正在嘗試編寫一個Ruby腳本來讀取本地HTML文件,並在某個#divid後插入更多的HTML(基本上是一個字符串)。在本地HTML文件中插入元素

我有點小菜,所以請不要猶豫,在這裏放一些代碼。

感謝

回答

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) } 
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()節點的需要。