ruby – 使用nokogiri将嵌套哈希转换为XML

前端之家收集整理的这篇文章主要介绍了ruby – 使用nokogiri将嵌套哈希转换为XML前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有很多级别的嵌套哈希,如:
{ :foo => 'bar',:foo1 => { :foo2 => 'bar2',:foo3 => 'bar3',:foo4 => { :foo5 => 'bar5' }}}

我怎样才能将它们转换成这样的XML?:

<foo>bar</foo>
<foo1>
    <foo2>bar2</foo2>
    <foo3>bar3</foo3>
    <foo4>
      <foo5>bar5</foo5>
    </foo4>
</foo1>

我已经尝试了xml.send方法,但它将上面嵌套的哈希转换为:

<foo1 foo3="bar3" foo4="foo5bar5" foo2="bar2"/>
<foo>bar</foo>

解决方法

这个怎么样?
class Hash
 def to_xml
  map do |k,v|
   text = Hash === v ? v.to_xml : v
   "<%s>%s</%s>" % [k,text,k]
  end.join
 end
end

h.to_xml
#=> "<foo>bar</foo><foo1><foo2>bar2</foo2><foo3>bar3</foo3><foo4><foo5>bar5</foo5></foo4></foo1>"

猜你在找的Ruby相关文章