Class: REXML::XPath
Overview
Wrapper class. Use this class to access the XPath functions.
Constant Summary collapse
- EMPTY_HASH =
          
A base Hash object, supposing to be used when initializing a default empty namespaces set, but is currently unused. TODO: either set the namespaces=EMPTY_HASH, or deprecate this.
 {}
Class Method Summary collapse
- 
  
    
      .each(element, path = nil, namespaces = nil, variables = {}, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Iterates over nodes that match the given path, calling the supplied block with the match.
 - 
  
    
      .first(element, path = nil, namespaces = nil, variables = {})  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Finds and returns the first node that matches the supplied xpath.
 - 
  
    
      .match(element, path = nil, namespaces = nil, variables = {})  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns an array of nodes matching a given XPath.
 
Methods included from Functions
boolean, ceiling, compare_language, concat, contains, context=, count, false, floor, get_namespace, id, lang, last, local_name, method_missing, name, namespace_context, namespace_context=, namespace_uri, normalize_space, not, number, position, processing_instruction, round, starts_with, string, string_length, string_value, substring, substring_after, substring_before, sum, text, translate, true, variables, variables=
Class Method Details
.each(element, path = nil, namespaces = nil, variables = {}, &block) ⇒ Object
Iterates over nodes that match the given path, calling the supplied block with the match.
- element
 - 
The context element
 - path
 - 
The xpath to search for. If not supplied or nil, defaults to ‘*’
 - namespaces
 - 
If supplied, a Hash which defines a namespace mapping
 - variables
 - 
If supplied, a Hash which maps $variables in the query to values. This can be used to avoid XPath injection attacks or to automatically handle escaping string values.
 
XPath.each( node ) { |el| ... }
XPath.each( node, '/*[@attr='v']' ) { |el| ... }
XPath.each( node, 'ancestor::x' ) { |el| ... }
XPath.each( node, '/book/publisher/text()=$publisher', {}, {"publisher"=>"O'Reilly"}) \
  {|el| ... }
  
      59 60 61 62 63 64 65 66 67 68  | 
    
      # File 'lib/rexml/xpath.rb', line 59 def XPath::each element, path=nil, namespaces=nil, variables={}, &block raise "The namespaces argument, if supplied, must be a hash object." unless namespaces.nil? or namespaces.kind_of?(Hash) raise "The variables argument, if supplied, must be a hash object." unless variables.kind_of?(Hash) parser = XPathParser.new parser.namespaces = namespaces parser.variables = variables path = "*" unless path element = [element] unless element.kind_of? Array parser.parse(path, element).each( &block ) end  | 
  
.first(element, path = nil, namespaces = nil, variables = {}) ⇒ Object
Finds and returns the first node that matches the supplied xpath.
- element
 - 
The context element
 - path
 - 
The xpath to search for. If not supplied or nil, returns the first node matching ‘*’.
 - namespaces
 - 
If supplied, a Hash which defines a namespace mapping.
 - variables
 - 
If supplied, a Hash which maps $variables in the query to values. This can be used to avoid XPath injection attacks or to automatically handle escaping string values.
 
XPath.first( node )
XPath.first( doc, "//b"} )
XPath.first( node, "a/x:b", { "x"=>"http://doofus" } )
XPath.first( node, '/book/publisher/text()=$publisher', {}, {"publisher"=>"O'Reilly"})
  
      30 31 32 33 34 35 36 37 38 39  | 
    
      # File 'lib/rexml/xpath.rb', line 30 def XPath::first element, path=nil, namespaces=nil, variables={} raise "The namespaces argument, if supplied, must be a hash object." unless namespaces.nil? or namespaces.kind_of?(Hash) raise "The variables argument, if supplied, must be a hash object." unless variables.kind_of?(Hash) parser = XPathParser.new parser.namespaces = namespaces parser.variables = variables path = "*" unless path element = [element] unless element.kind_of? Array parser.parse(path, element).flatten[0] end  | 
  
.match(element, path = nil, namespaces = nil, variables = {}) ⇒ Object
Returns an array of nodes matching a given XPath.
      71 72 73 74 75 76 77 78  | 
    
      # File 'lib/rexml/xpath.rb', line 71 def XPath::match element, path=nil, namespaces=nil, variables={} parser = XPathParser.new parser.namespaces = namespaces parser.variables = variables path = "*" unless path element = [element] unless element.kind_of? Array parser.parse(path,element) end  |