1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-02-10 13:57:22 +03:00

Capture XML parser exceptions in XMLUtils(cherry picked from commit f2d04f680e8ee8591782ff9e4fef3a3a6c5b76da)

This commit is contained in:
Daniel Molina 2011-02-14 17:17:38 +01:00
parent b98c4d8cee
commit 2e8fd8e83a

View File

@ -46,15 +46,19 @@ module OpenNebula
# xml:: _String_ the XML document of the object
# root_element:: _String_ Base xml element
def initialize_xml(xml, root_element)
if NOKOGIRI
@xml = Nokogiri::XML(xml).xpath("/#{root_element}")
if @xml.size == 0
@xml = nil
end
@xml = XMLElement.build_xml(xml, root_element)
if OpenNebula.is_error?(@xml)
@xml = nil
else
@xml = REXML::Document.new(xml).root
if @xml.name != root_element
@xml = nil
if NOKOGIRI
if @xml.size == 0
@xml = nil
end
else
if @xml.name != root_element
@xml = nil
end
end
end
end
@ -64,10 +68,14 @@ module OpenNebula
# root_element:: _String_ Base xml element
# [return] _XML_ object for the underlying XML engine
def self.build_xml(xml, root_element)
if NOKOGIRI
doc = Nokogiri::XML(xml).xpath("/#{root_element}")
else
doc = REXML::Document.new(xml).root
begin
if NOKOGIRI
doc = Nokogiri::XML(xml).xpath("/#{root_element}")
else
doc = REXML::Document.new(xml).root
end
rescue Exception => e
return OpenNebula::Error.new(e.message)
end
return doc