Rexml Xpath parsing change

Hi,

Some of my old code no longer works with the latest version of ruby
and I’m trying to figure out why.

My code is parsing an XML file with REXML, using XPath.each(). The
same code with the same xpath on the same xml input returns some
results in ruby 1.8.4, but no results in ruby 1.8.6.

Can anyone explain this? I’ve had no luck searching through the
archives of this group.

I’ve distilled out a minimal example.

XML input:

<?xml version="1.0" encoding="UTF-8"?>







Code:

xPath = “/containerxml/container[@name=‘0001’]/atom”
REXML::XPath.each(xDoc.root, xPath) do |elt|
puts elt.attributes[“name”]
end

Results on ruby 1.8.4:

build4:/p4/gq$ ruby -v
ruby 1.8.4 (2005-12-24) [i586-linux]

build4:/p4/gq$ ruby test.rb
1001
1002
1003

Results on ruby 1.8.6:

jim@roch:/tmp$ ruby -v
ruby 1.8.6 (2007-06-07 patchlevel 36) [i486-linux]

jim@roch:/tmp$ ruby test.rb
jim@roch:/tmp$

On Monday 29 October 2007 20:25, ermac wrote:

archives of this group.

end
1003

Results on ruby 1.8.6:

jim@roch:/tmp$ ruby -v
ruby 1.8.6 (2007-06-07 patchlevel 36) [i486-linux]

jim@roch:/tmp$ ruby test.rb
jim@roch:/tmp$

Did you find a solution? I’m having the same problem.

On Saturday 03 November 2007 21:20, Wiebe C. wrote:

Did you find a solution? I’m having the same problem.

I found this:

http://www.intertwingly.net/blog/2007/11/02/MonkeyPatch-for-Ruby-1-8-6

A quote from the article:

“Unfortunately, there is a bug in Ruby 1.8.6 that affects documents with
a
default namespace (even a vestigial one, like those sported by WordPress
weblogs) which prevents non-namespace qualified attribute names from
working
in XPath expressions.”