rubyでNokogiri Xml Builderを用いて,hashを基にxmlを構成するプログラムを構成しています。
現状書いているコードは以下です。
Ruby
1 def makeXml(hash) 2 xml_object = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml| 3 4 xml.rootNode('xmlns' => 'value'){ 5 makeXmlNode(hash,xml) 6 } 7 8 end 9 10 return xml_object.to_xml 11 12 end
makeXmlNode関数は、hashがどんなnestの場合にも対応できるように、再帰的に呼び出してnodeを追加するような関数です。(諸事情により内容はお見せできません…すみません)
現状rootNodeの部分は呼び出しに合わせて手書きで書き換えるしかない状況ですが、これを関数の引数として、より汎用性のある関数にしたいです。
コードイメージは以下のようなものです。
Ruby
1def makeXml(hash,rootNode) 2 #省略 3 xml_object = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml| 4 5 #以下の`rootNode`の部分が引数によって変わるイメージ 6 xml.rootNode('xmlns' => 'value'){ 7 makeXmlNode(hash,xml) 8 } 9 10 end 11 12 return xml_object.to_xml 13 14end
ただし、rootNodeには"xmlns"="value"
を追加したいため、単純にxml.send(rootNode){}
とはできません。
もし良い案があれば教えていただきたいです。
よろしくお願いいたします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。