Nokogiriのdomに要素を追加する
特定の要素を抜き出すのではなく特定のノードに要素を追加する使い方
#!/usr/bin/ruby # coding: utf-8 require 'nokogiri' if $0==__FILE__ then doc=Nokogiri::HTML <<-__HTML__ <html> <head> </head> <body> <div>div0</div> </body> </html> __HTML__ body=doc.at('/html/body') div1=Nokogiri::XML::Node::new('div', doc) # htmlとして追加 div1.inner_html='<p>div1</p>' body.add_child(div1) puts body puts div2=Nokogiri::XML::Node::new('div', doc) # テキストとして追加 div2.content='<p>div2</p>' doc.at('/html/body/div').add_previous_sibling(div2) puts body puts end
実行結果
# add_childは、node.childrenの末尾に追加 <body> <div>div0</div> <div><p>div1</p></div> </body> # 先頭に追加するには、node.children[0].add_previous_sibling node # 的な方法が必要。node.chidrenが無い時と場合わけが必要か。 <body> <div><p>div2</p></div> <div>div0</div> <div><p>div1</p></div> </body>