How to Write Xml in Ruby

In Ruby there is no built-in support for parsing and writing xml. There are however a couple of gems (packages) that allow you to do exactly this. If you are working in Rails - you have this for “free” with ActiveSupport (which you could also just require as a standalone package). This gives you a to_xml on a hash which is dead easy to use. There is also the xmlsimple gem which is a port of the same library from perl.

My favourite tool for working with xml in ruby is nokogiri though.

require 'nokogiri'

user = {:name => "Claus Witt", :powers => ["awesomeness", "code"]}
builder = Nokogiri::XML::Builder.new { |xml|

    xml.user {
        xml.name user[:name]
        xml.powers { |xml|
            user[:powers].each { |power|
                xml.name power
            }
        }
    }
}

puts builder.to_xml

This will output an xml looking like this:

<?xml version="1.0"?>
<user>
  <name>Claus Witt</name>
  <powers>
    <name>awesomeness</name>
    <name>code</name>
  </powers>
</user>