Hash to_xml from_xml

Am I missing something

require 'active_record'
require 'active_support'
require 'pp'

v = Hash.from_xml %{
<hash>
  <users type="array">
      <user type="integer">1</user>
      <user type="integer">2</user>
      <user type="integer">3</user>
  </users>
</hash>
}
pp v
pp v.to_xml

generates

{"hash"=>{"users"=>[1, 2, 3]}}

/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/

core_ext/array/conversions.rb:163:in to_xml': Not all elements respond to to_xml (RuntimeError) from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/ active_support/core_ext/hash/conversions.rb:115:into_xml’
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:110:in each' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/ active_support/core_ext/hash/conversions.rb:110:into_xml’
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/
xmlbase.rb:134:in call' from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/ xmlbase.rb:134:in_nested_structures’
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/
xmlbase.rb:58:in method_missing' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/ active_support/core_ext/hash/conversions.rb:109:insend
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:109:in to_xml' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/ active_support/core_ext/hash/conversions.rb:113:into_xml’
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:110:in each' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/ active_support/core_ext/hash/conversions.rb:110:into_xml’
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/
xmlbase.rb:134:in call' from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/ xmlbase.rb:134:in_nested_structures’
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/
xmlbase.rb:58:in method_missing' from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/ active_support/core_ext/hash/conversions.rb:109:insend
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/core_ext/hash/conversions.rb:109:in `to_xml’

Any way to get this working?

Brad

bradphelan wrote:

/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/

core_ext/array/conversions.rb:163:in `to_xml’: Not all elements
respond to to_xml (RuntimeError)

Indeed: ActiveSupport is trying to call to_xml on each element of the
array, and failing.

require ‘rubygems’
=> true
require ‘active_support’
=> true
{}.to_xml
=> “<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n\n”
1.to_xml
NoMethodError: undefined method `to_xml’ for 1:Fixnum
from (irb):4

Any way to get this working?

Googling “rails to_xml”, the second hit is
http://api.rubyonrails.org/classes/ActiveRecord/XmlSerialization.html
I also found
http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Array/Conversions.html#M001207

This suggests it’s only intended for use with ActiveRecord objects and
collections of ActiveRecord objects, but you may need to dig further
into the code. Perhaps have a look at ActiveResource.

However, these are all parts of Rails, and Rails questions are best
asked in a Rails forum.