Class: REXML::XPath
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Instance Chain: 
          self,
           Functions | |
| Inherits: | Object | 
| Defined in: | lib/rexml/xpath.rb | 
Overview
Wrapper class.  Use this class to access the XPath functions.
Constant Summary
- 
    EMPTY_HASH =
    # File 'lib/rexml/xpath.rb', line 12A 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. {}
Functions - Included
  
Class Method Summary
- 
    
      .each(element, path = nil, namespaces = nil, variables = {}, options = {}, &block)  
    
    Iterates over nodes that match the given path, calling the supplied block with the match. 
- 
    
      .first(element, path = nil, namespaces = nil, variables = {}, options = {})  
    
    Finds and returns the first node that matches the supplied xpath. 
- 
    
      .match(element, path = nil, namespaces = nil, variables = {}, options = {})  
    
    Returns an array of nodes matching a given XPath.
Class Method Details
.each(element, path = nil, namespaces = nil, variables = {}, options = {}, &block)
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| ... }# File 'lib/rexml/xpath.rb', line 60
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 = {}, options = {})
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"})# File 'lib/rexml/xpath.rb', line 31
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 = {}, options = {})
Returns an array of nodes matching a given XPath.
# File 'lib/rexml/xpath.rb', line 72
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