Skip to content

Instantly share code, notes, and snippets.

@tenderlove
Created February 25, 2011 01:29
Show Gist options
  • Save tenderlove/843255 to your computer and use it in GitHub Desktop.
Save tenderlove/843255 to your computer and use it in GitHub Desktop.
require 'nokogiri'
doc = Nokogiri.XML DATA
class Hasify
def convert node
return node.text if node.text?
{ node.name => node.children.map { |x| convert x } }
end
end
h = Hasify.new
p h.convert doc.root
__END__
<?xml version="1.0" ?><DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>W6P62OURN04XF89JYL86</requestId><reservationSet><item><ownerId>production</ownerId><groupSet><item><groupId>default</groupId></item></groupSet><reservationId>r-6p9fdt2e</reservationId><instancesSet><item><displayDescription/><displayName>Server 199</displayName><keyName>None (production, e3ab3)</keyName><instanceId>i-000000c7</instanceId><instanceState><code>1</code><name>running</name></instanceState><publicDnsName/><imageId>ami-usc3oydl</imageId><productCodesSet/><privateDnsName>10.1.171.8</privateDnsName><dnsName>10.1.171.8</dnsName><launchTime>2011-02-21 17:54:35</launchTime><placement><availabilityZone>nova</availabilityZone></placement><amiLaunchIndex>0</amiLaunchIndex><instanceType>m1.small</instanceType></item></instancesSet></item><item><ownerId>jtran</ownerId><groupSet><item><groupId>default</groupId></item></groupSet><reservationId>r-5oexkoz1</reservationId><instancesSet><item><displayDescription/><displayName>Server 198</displayName><keyName>None (jtran, cm-02)</keyName><instanceId>i-000000c6</instanceId><instanceState><code>1</code><name>running</name></instanceState><publicDnsName/><imageId>ami-usc3oydl</imageId><productCodesSet/><privateDnsName>10.1.173.17</privateDnsName><dnsName>10.1.173.17</dnsName><launchTime>2011-02-20 07:17:03</launchTime><placement><availabilityZone>nova</availabilityZone></placement><amiLaunchIndex>0</amiLaunchIndex><instanceType>m1.small</instanceType></item></instancesSet></item></reservationSet></DescribeInstancesResponse>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment