NokogiriでXMLに子要素を追加すると要素名が小文字になる
解決
- Nokogiri::XML::DocumentFragment#newを使う。長ったらしくてめんどくさいし、もっといい方法がある気がするんだけど見つけられていない。
ソースコード
#!/usr/bin/env ruby # coding: utf-8 require "nokogiri" doc = Nokogiri::XML("<RootNode>") doc.root.add_child "<AddChildByString>" doc.root.add_child Nokogiri::XML::DocumentFragment.new(doc, '<AddChildByDocumentFragment>') puts doc.to_xml # => # <?xml version="1.0"?> # <RootNode> # <addchildbystring/> # <AddChildByDocumentFragment/> # </RootNode>
[追記 2013/03/07]Nokogiri::XML::Builderという便利なものがあった
Nokogiriのドキュメントを漁っていたら下記のような書き方で生成できることが分かった。こっちの方が便利そう。
#!/usr/bin/env ruby # coding: utf-8 require "nokogiri" document = Nokogiri::XML::Builder.new do |doc| doc.RootNode { doc.AddChildByString doc.AddChildByDocumentFragment } end puts document.to_xml