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