RailsでXML構造をハッシュに変換するとHash.from_xml(@xml)
、パーサーは空の配列とnil値を区別しませんが、XMLは、すぐに終了するノードを空の配列として表し\
ます。たとえば<audio_languages/>
、属性nil="true"
を持つノードはnilとして解釈されます。値。
XML構造(生成方法を制御できます)は次のようになります。
<response>
<medias>
<media>
<id>1</id>
<name>Media-1</name>
<audio_languages/>
<avg_rating nil="true"></avg_rating>
</media>
<media>
<id>2</id>
<name>Media-2</name>
<audio_languages/>
<avg_rating nil="true"></avg_rating>
</media>
</medias>
</response>
からの期待される出力は次のHash.from_xml(@xml)
ようになります。
{"response"=>{"medias"=>{"media"=>[{"id"=>"1", "name"=>"Media-1", "audio_languages"=>[], "avg_rating"=>nil}, {"id"=>"2", "name"=>"Media-2", "audio_languages"=>[], "avg_rating"=>nil}]}}}
代わりに、とのnil値を取得しaudio_languages
ますavg_rating
:
{"response"=>{"medias"=>{"media"=>[{"id"=>"1", "name"=>"Media-1", "audio_languages"=>nil, "avg_rating"=>nil}, {"id"=>"2", "name"=>"Media-2", "audio_languages"=>nil, "avg_rating"=>nil}]}}}