Method: REXML::XPath.each
- Defined in:
- lib/rexml/xpath.rb
.each(element, path = nil, namespaces = nil, variables = {}, options = {}, &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| ... }
60 61 62 63 64 65 66 67 68 69 |
# 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 |