使用nokogiri将嵌套散列转换为XML [英] Converting nested hash into XML using nokogiri
本文介绍了使用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 =bar3foo4 =foo5bar5foo2 = BAR2\" />
< foo>栏< / foo>
解决方案
这个怎么样? b
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>巴≤; /富>< foo1>< foo2的> BAR2< / foo2的>< foo3> BAR3< / foo3>< foo4>< foo5> BAR5< / foo5>< / foo4> < / foo1>中
I have many levels of nested hash like:
{ :foo => 'bar', :foo1 => { :foo2 => 'bar2', :foo3 => 'bar3', :foo4 => { :foo5 => 'bar5' }}}
How can I convert them into an XML like this?:
<foo>bar</foo>
<foo1>
<foo2>bar2</foo2>
<foo3>bar3</foo3>
<foo4>
<foo5>bar5</foo5>
</foo4>
</foo1>
I have tried the xml.send
method, but it converts the above nested hash to:
<foo1 foo3="bar3" foo4="foo5bar5" foo2="bar2"/>
<foo>bar</foo>
解决方案
How about this?
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>"
这篇关于使用nokogiri将嵌套散列转换为XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文