Implementation of xpath in ruby?

Dear Friends,

i need to implement xpath in my parser class. I have implemented a new
parser which parses xml document. I have used token types to parse xml
like,

while parser.next

     if parser.token_type == tag_start
        parser.tag
     end

     if parser.token_type == tag_end
        parser.tag_end
     end
end

so a token_type method returns token types like tag_start, tag_end,
comment, pi etc and tag method returns the tag start and tag_end method
returns the tag end of an xml document.

now i need to implement xpath in my parser class. I need to navigate the
xml document using xpath like,

while parser.next!

parser.path( ‘book/book-name’ ) do

end

end

could anyone help me with some solution to implement xpath in my parser
class.I don’t want to use REXML or HPRICOT. i want to create my own
methods which does the above.

Thanks in advance

Regards,
Martin

On Thu, May 22, 2008 at 1:08 PM, dare ruby [email protected]
wrote:

    end

now i need to implement xpath in my parser class. I need to navigate the
could anyone help me with some solution to implement xpath in my parser
class.I don’t want to use REXML or HPRICOT. i want to create my own
methods which does the above.

I’m not sure about your interface, anyway:
You probably need to keep info about the current path from the root
(stack is usually handy for this), and
have an xpath parser that says yes/no for an xpath expression and
current path.
then you yield the current node.

Why are you intentionally reinventing the wheel? Is it because you
want a stream parser (like SAX) rather than building a DOM?
Unfortunately, XPath requires building a DOM. Is it that you need it
to be fast? A fast implementation of XPath is in libxml. Perhaps you
can try the ruby binding to libxml. It’s a work in progress but I have
used it successfully to parse XML (and it’s lightning-fast).

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Mark T. wrote:
| Why are you intentionally reinventing the wheel?

Learning exercise, for example.


Phillip G.
Twitter: twitter.com/cynicalryan
Blog: http://justarubyist.blogspot.com

~ The dame was hysterical. Dames Usually are. – Calvin as Tracer
Bullet
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkg1tFoACgkQbtAgaoJTgL8HSACaAkMA7h2jBYo5Wh3vLDqTxb7J
jqcAn0GGSm5pElioFycmVMVmM9bMaUbS
=hAvY
-----END PGP SIGNATURE-----