From: Alberto Alberto Date: 2009-02-16T20:13:15+09:00 Subject: Re: Xpath 7stud -- wrote: > Alberto Alberto wrote: >> >> I would like to know if it is possible, using REXML, get full path from >> root, of document XML, to leaf node, through a XPath query? >> >> >> example with l'XML: >> >> >> >> >> >> >> >> ... >> >> >> >> >> Xpath: //terzo[@id='3'] >> >> Output: >> //primo/secondo/terzo[id='3'] >> > > Is that really considered XML? > > require "rexml/document" > include REXML > > xml = < > > > > > > ... > > > > > > > TO_END_OF_XML > > doc = Document.new xml > > target = "//terzo[@id='3']" > paths = [] > > XPath.each(doc, target) do |element| > parents = [] > > while true > parent = element.parent > break if parent.name == "" > > parents << parent.name > element = parent > end > > path = parents.reverse.join('/') > paths << "//#{path}#{target[1..-1]}" > end > > puts *paths > > --output:-- > //primo/secondo/terzo[@id='3'] > //primo/terzo[@id='3'] I try this solution and it works, but now my question is after operation parents << parent.name over parents array can I obtain a value of attributes with someting like this? .attributes.each_attribute {|attr| p attr.expanded_name+" => "+attr.value } Thank's a lot for quickly support. Alberto -- Posted via http://www.ruby-forum.com/.