rubyonrails 3 Hash.from_xml il manque des données (xml attributes)

Il est bien pratique dans rails (2 et 3) d'importer un xml sous forme de hash grâce à Hash.from_xml("blabla xml") !

Problème cette méthode saute des éléments du xml en particulier les attributs :

Hash.from_xml("<tag attr='val'>content</tag>") #=> {"tag"=>"content"}


On aurait préféré :

Hash.from_xml("<tag attr='val'>content</tag>", true)

#=> {"tag"=>{"content"=>"content", "attr"=>"val"}}

Il y avait aussi :

Hash.from_xml("<a attr='val'>du contenu<b attr='val'>bla</b></a>")

#=> {"a"=>"du contenu"}

Hash.from_xml("<a attr='val'><b attr2='val2'>bla</b></a>")

#=> {"a"=>{"b"=>"bla", "attr"=>"val"}}

Comme vous pouvez le constaté, il manque pas mal de chose. Il y a donc un patch pour rails 2 et rails 3 qui permet de corrigé ceci (voir le lien en bas).

Mais bon patcher rails3 c'est pas super super pratique ni simple.

Je vous ai donc fait un petit gem avec le patch (le mérite revient à celui qui a fait le patch : le blog du mec Peter Wagenet )

Pour l'installer : dans le Gemfile du projet :

gem "rivsc-xmlattributes" , "1.0.0"

puis 

bundle install

Ci-dessous le patch pour rails 2 et rails 3 :

https://rails.lighthouseapp.com/projects/8994/tickets/1598-preserve-xml-attributes-with-hashfrom_xml-and-activeresource