From 8d2cab1c43d80d542aa9fa324ebaaa0d2658aa70 Mon Sep 17 00:00:00 2001 From: Daniel Molina Date: Thu, 18 Nov 2010 17:38:37 +0100 Subject: [PATCH] bug #381: Fix REXML XML formatting compatibility with ruby 1.8.5 --- src/oca/ruby/OpenNebula/XMLUtils.rb | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/oca/ruby/OpenNebula/XMLUtils.rb b/src/oca/ruby/OpenNebula/XMLUtils.rb index 261e447b8c..59938e8f18 100644 --- a/src/oca/ruby/OpenNebula/XMLUtils.rb +++ b/src/oca/ruby/OpenNebula/XMLUtils.rb @@ -7,6 +7,13 @@ module OpenNebula rescue LoadError NOKOGIRI=false end + + begin + require 'rexml/formatters/default' + REXML_FORMATTERS=true + rescue LoadError + REXML_FORMATTERS=false + end ########################################################################### # The XMLElement class provides an abstraction of the underlying @@ -176,17 +183,18 @@ module OpenNebula end def to_xml(pretty=false) - if NOKOGIRI - @xml.to_xml + if NOKOGIRI && pretty + str = @xml.to_xml + elsif REXML_FORMATTERS && pretty + str = String.new + formatter = REXML::Formatters::Pretty.new + formatter.compact = true + str = formatter.write(@xml,str) else - str = "" - if pretty - REXML::Formatters::Pretty.new(1).write(@xml,str) - else - REXML::Formatters::Default.new.write(@xml,str) - end - str + str = @xml.to_s end + + return str end end