Method: AMEE::Data::ItemValue.from_xml

Defined in:
lib/amee/data_item_value.rb

.from_xml(xml, path) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/amee/data_item_value.rb', line 79

def self.from_xml(xml, path)
  # Read XML
  @doc = xml.is_a?(String) ? load_xml_doc(xml) : xml
  data = {}
  if @doc.xpath("descendant-or-self::ItemValue").length>1
    raise AMEE::BadData.new("Couldn't load DataItemValue from XML. This is an item value history.\n#{xml}")
  end
  raise if @doc.xpath("descendant-or-self::ItemValue").length==0
  begin
    data[:uid] = x "@uid"
    data[:created] = DateTime.parse(x "@Created") rescue nil
    data[:modified] = DateTime.parse(x "@Modified") rescue nil
    data[:name] = x 'Name'
    data[:path] = path.gsub(/^\/data/, '')
    data[:value] = x 'Value'
    data[:type] = x 'ItemValueDefinition/ValueDefinition/ValueType'
    data[:from_profile] =  false
    data[:from_data] = true
    data[:start_date] = DateTime.parse(x "StartDate") rescue nil
    # Create object
    ItemValue.new(data)
  rescue
    raise AMEE::BadData.new("Couldn't load DataItemValue from XML. Check that your URL is correct.\n#{xml}")
  end
end