diff --git a/src/oca/ruby/OpenNebula/XMLUtils.rb b/src/oca/ruby/OpenNebula/XMLUtils.rb index 261e447b8c..9444a4c098 100644 --- a/src/oca/ruby/OpenNebula/XMLUtils.rb +++ b/src/oca/ruby/OpenNebula/XMLUtils.rb @@ -8,6 +8,13 @@ module OpenNebula NOKOGIRI=false end + begin + require 'rexml/formatters/pretty' + REXML_FORMATTERS=true + rescue LoadError + REXML_FORMATTERS=false + end + ########################################################################### # The XMLElement class provides an abstraction of the underlying # XML parser engine. It provides XML-related methods for the Pool and @@ -176,17 +183,20 @@ 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 + + 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