What Bruno says makes sense. A SAX pipeline is actually just a sequence of classes, each one invoking methods of another one.
 
For instance:
 
    SaxParser->ContHandler1->ContHandler2->...->ContHandlerN
 
If ContHandler1 invokes endDocument(), all this does is call this method in ContHandler2. ContHandler1 is free to do this at any time.
But that has absolutely no implication at all to the SaxParser. The SaxParser is totally oblivious to what happens down the line.
The SaxParser will continue parsing the source XML, identifying tokens and invoking ContHandler1's methods.
Of course, if ContHandler1 invokes endDocument() twice, this will most likely result in an exception, but that's because ContHandler was not coded correctly.
 
What I thought was that there could be somewhere a "back door" that  ContHandler could signal SaxParser to stop, but that does not seem to exist.
 
Unless any of the ContHandlerX throws an exception (which might be the way to go, at least in my own application).
 
Thanks,
 
jlerm
----- Original Message -----
Sent: Thursday, November 06, 2003 10:58 AM
Subject: Re: Stopping a SAX parser

Interesting. I was under the assumption that the content handler events were synchronous, so the processing could be interrupted by calling endDocument(). Doesn't the pipeline get recycled at this point? I thought that a generator would stop processing when it gets a life cycle event to clean up.
This was my expectation, but I haven't looked at the code (which is always the last word!)

David

Bruno Dumon wrote:
On Thu, 2003-11-06 at 17:36, David Kavanagh wrote:
  
If I'm not mistaken, you can call endDocument() in your own
transformer at any time. That effectively puts an end to pipeline
processing.
    

But that won't stop the parser from parsing the rest of the file and
pushing SAX events out.

The only way of stopping a SAX-parser is throwing an exception.

Using a pull-parser you can decide yourself when you stop reading.

  
 Hopefully, at that point, you've also genereated events for some
sending some data out of your transformer!

David

jcplerm wrote:
    
I'm not sure which list to post this question to, but maybe one of
you know if it's possible at all to stop a SAX parser once the
immediate content handler finds whatever info it is looking for, in
order to avoid unnecessary parsing of the rest of a potentially
large XML document?
 
Thanks,
 
jlerm
      

Reply via email to