[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

implementation of xpath in ruby?

dare ruby

5/22/2008 11:08:00 AM

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
--
Posted via http://www.ruby-....

3 Answers

Jano Svitok

5/22/2008 3:49:00 PM

0

On Thu, May 22, 2008 at 1:08 PM, dare ruby <martin@angleritech.com> wrote:
> 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.

Mark Thomas

5/22/2008 5:48:00 PM

0

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

Phillip Gawlowski

5/22/2008 5:59:00 PM

0

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

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

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