class Amazon::Element
Internal wrapper class to provide convenient method to access Nokogiri element value.
Public Class Methods
Return the text value of an element.
# File lib/amazon/ecs.rb, line 319 def get(element, path='.') return unless element result = element.at_xpath(path) result = result.inner_html if result result end
Return an array of values based on the given path.
# File lib/amazon/ecs.rb, line 333 def get_array(element, path='.') return unless element result = element/path if (result.is_a? Nokogiri::XML::NodeSet) || (result.is_a? Array) result.collect { |item| self.get(item) } else [self.get(result)] end end
Return child element text values of the given path.
# File lib/amazon/ecs.rb, line 345 def get_hash(element, path='.') return unless element result = element.at_xpath(path) if result hash = {} result = result.children result.each do |item| hash[item.name] = item.inner_html end hash end end
Return an unescaped text value of an element.
# File lib/amazon/ecs.rb, line 327 def get_unescaped(element, path='.') result = self.get(element, path) CGI::unescapeHTML(result) if result end
Pass Nokogiri::XML::Element object
# File lib/amazon/ecs.rb, line 361 def initialize(element) @element = element end
Public Instance Methods
Return a Nokogiri::XML::NodeSet of elements matching the given path. Example: element/“author”.
# File lib/amazon/ecs.rb, line 371 def /(path) elements = @element/path return nil if elements.size == 0 elements end
# File lib/amazon/ecs.rb, line 410 def attributes return unless self.elem self.elem.attributes end
Return Nokogiri::XML::Element object
# File lib/amazon/ecs.rb, line 366 def elem @element end
Get the text value of the given path, leave empty to retrieve current element value.
# File lib/amazon/ecs.rb, line 391 def get(path='.') Element.get(@element, path) end
Get the array values of the given path.
# File lib/amazon/ecs.rb, line 401 def get_array(path='.') Element.get_array(@element, path) end
Similar with search_and_convert but always return first element if more than one elements found
# File lib/amazon/ecs.rb, line 385 def get_element(path) elements = get_elements(path) elements[0] if elements end
Return an array of Amazon::Element matching the given path
# File lib/amazon/ecs.rb, line 378 def get_elements(path) elements = self./(path) return unless elements elements = elements.map{|element| Element.new(element)} end
Get the children element text values in hash format with the element names as the hash keys.
# File lib/amazon/ecs.rb, line 406 def get_hash(path='.') Element.get_hash(@element, path) end
Get the unescaped HTML text of the given path.
# File lib/amazon/ecs.rb, line 396 def get_unescaped(path='.') Element.get_unescaped(@element, path) end
# File lib/amazon/ecs.rb, line 415 def to_s elem.to_s if elem end