Rexml Xpath parsing change

Discussion in 'Ruby' started by ermac, Oct 29, 2007.

  1. ermac

    ermac Guest

    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"?>
    <containerxml version="2" xmlns="http://www.frogbender.com/schemas/
    container1.0.0">
    <container name="0001">
    <atom name="1001" value="one"/>
    <atom name="1002" value="two"/>
    <atom name="1003" value="three"/>
    </container>
    </containerxml>


    ## 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$
    ermac, Oct 29, 2007
    #1
    1. Advertising

  2. ermac

    Guest

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

    > 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"?>
    > <containerxml version="2" xmlns="http://www.frogbender.com/schemas/
    > container1.0.0">
    > <container name="0001">
    > <atom name="1001" value="one"/>
    > <atom name="1002" value="two"/>
    > <atom name="1003" value="three"/>
    > </container>
    > </containerxml>
    >
    >
    > ## 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$


    Did you find a solution? I'm having the same problem.
    , Nov 3, 2007
    #2
    1. Advertising

  3. ermac

    Guest

    On Saturday 03 November 2007 21:20, Wiebe Cazemier 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."
    , Nov 3, 2007
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Damphyr
    Replies:
    2
    Views:
    137
    Damphyr
    Jul 16, 2003
  2. Han Holl

    Rexml xpath question

    Han Holl, Feb 22, 2004, in forum: Ruby
    Replies:
    7
    Views:
    142
    Han Holl
    Mar 6, 2004
  3. Daniel Berger

    rexml error - REXML::Validation

    Daniel Berger, Oct 12, 2004, in forum: Ruby
    Replies:
    2
    Views:
    151
    Henrik Horneber
    Oct 12, 2004
  4. Peter Bailey

    Parsing through XML with REXML/XPath

    Peter Bailey, Sep 25, 2007, in forum: Ruby
    Replies:
    1
    Views:
    109
    Peter Bailey
    Sep 25, 2007
  5. Phlip
    Replies:
    0
    Views:
    140
    Phlip
    Jan 15, 2008
Loading...

Share This Page