Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more

In Files

  • rexml/xpath.rb

Parent

Included Modules

Class/Module Index [+]

Quicksearch

REXML::XPath

Wrapper class. Use this class to access the XPath functions.

Constants

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.

Public Class Methods

each(element, path=nil, namespaces=nil, variables={}) click to toggle source

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 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={}) click to toggle source

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 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={}) click to toggle source

Returns an array of nodes matching a given XPath.

 
               # File 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
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.