When I convert an XML structure to hash with Hash.from_xml(@xml)
in Rails, the parser does not distinguish between empty arrays and nil values, whereas the XML depicts nodes that are immediately terminated with \
to be empty arrays, e.g. <audio_languages/>
vs. those with attribute nil="true"
to be interpreted as nil values.
The XML structure (which I have control over on how to generate) looks like this:
<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>
The expected output from Hash.from_xml(@xml)
would be:
{"response"=>{"medias"=>{"media"=>[{"id"=>"1", "name"=>"Media-1", "audio_languages"=>[], "avg_rating"=>nil}, {"id"=>"2", "name"=>"Media-2", "audio_languages"=>[], "avg_rating"=>nil}]}}}
instead, I get nil values for audio_languages
and 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}]}}}