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:
parent
b98c4d8cee
commit
2e8fd8e83a
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user