implementation of xpath in ruby?

D

dare 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
 
J

Jano Svitok

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.

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.
 
M

Mark Thomas

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).
 
P

Phillip Gawlowski

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

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

Learning exercise, for example.

- --
Phillip Gawlowski
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-----
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

using Xpath in Ruby 2
tag, tag_end in parser 2
Hpricot and xpath 7
ruby / rexml / xpath bug? 7
From a URL to XPath 2.0 1
REXML and XPath 4
Parsing XML file 3
Rexml Xpath parsing change 2

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,228
Members
46,818
Latest member
SapanaCarpetStudio

Latest Threads

Top