西山和広です。 At Thu, 4 Mar 2010 16:17:30 +0900, Takayuki Suzuki wrote: > > 既に作成済みのHTMLドキュメントを erb に食わせるため > のテンプレートに変換したくて Nokogiri をつかってみた > のですが、思うようにいきません。 > > <input type=text name=namae size=20> > > を > > <%= textField('namae', {:size=>20}) %> > > に置き換えて出力したいのですが < > をエスケープせずに > 出力する方法はないでしょうか? > > test.rb test.rb を元に試してみたところ、HTML なら CDATA で そのまま出力できるようです。 こういう使い方をして良いものなのかどうかはわからないので、 将来使えなくなる可能性があるかもしれませんが。 Text と CDATA で new の引数の順番が違うのでそこも注意が 必要そうです。 % cat ruby-list-46890.rb require 'rubygems' require 'nokogiri' doc = Nokogiri::HTML(<<EOM) <form> Name : <input type=text name=namae size=20> </form> EOM node = doc.xpath('/html/body/form/input')[0] str = "<%= textField('namae', {:size=>20}) %>" new = Nokogiri::XML::CDATA::new(doc, str) node.replace(new) puts doc.xpath('/html/body/form')[0].to_html puts doc.xpath('/html/body/form')[0].to_xml % ruby ruby-list-46890.rb <form> Name : <%= textField('namae', {:size=>20}) %> </form> <form> Name : <![CDATA[<%= textField('namae', {:size=>20}) %>]]></form> % gem list nokogiri *** LOCAL GEMS *** nokogiri (1.4.1) % -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA)