def method_missing(id, *args, &block)
      has_some = false
      ids = id.to_s
      i = args[0].to_i # will be 0 if no arg or parsing fails
      nodes.each do |n|
        if (n.is_a?(Element) || n.is_a?(Instruct)) && (n.value == id || n.value == ids || name_matchs?(n.value, ids))
          return n if 0 == i
          has_some = true
          i -= 1
        end
      end
      if instance_variable_defined?(:@attributes)
        return @attributes[id] if @attributes.has_key?(id)
        return @attributes[ids] if @attributes.has_key?(ids)
      end
      return nil if has_some
      raise NoMethodError.new("#{ids} not found", name)
    end
def method_missing(id, *args, &block)
      has_some = false
      ids = id.to_s
      i = args[0].to_i # will be 0 if no arg or parsing fails
      nodes.each do |n|
        if (n.is_a?(Element) || n.is_a?(Instruct)) && (n.value == id || n.value == ids || name_matchs?(n.value, ids))
          return n if 0 == i
          has_some = true
          i -= 1
        end
      end
      if instance_variable_defined?(:@attributes)
        return @attributes[id] if @attributes.has_key?(id)
        return @attributes[ids] if @attributes.has_key?(ids)
      end
      return nil if has_some
      raise NoMethodError.new("#{ids} not found", name)
    end
Handles the 'easy' API that allows navigating a simple XML by
 referencing elements and attributes by name.
 - +id+ [Symbol] element or attribute name
 *return* [Element|Node|String|nil] the element, attribute value, or Node identifed by the name

 _raise_ [NoMethodError] if no match is found