"Jason E. Stewart" <[EMAIL PROTECTED]> writes:

> I'd like to create a single parser instance, and then reuse it to
> parse a few thousand small XML files over and over (the xmlconf test
> suite).
> 
> The problem happens when I parse a file that causes an error. When I
> try to parse the next file, it seems that the previous parse left the
> parser in a bad state:
> 
>    Received XMLException without handler
>    Exception thrown in file: 'SAXParser.cpp'
>    At line: '385'
>    Exception message is:  
>    Parse may not be called while parsing
> 
> DOM seems to have a reset() method, but not SAX. When I try calling
> DOM::reset(), or IDOM, I get an abort because it calls a pure virtual
> method.

Hey,

I also tried using the SAXParser progressive parsing interface:
parseFirst(), parseNext(), and parseReset(). 

This works for a while, but eventually parseReset() throws an
undocumented XMLException from XMLScanner.cpp:818:

   parseReset caused exception: XMLException:
   FILE:    XMLScanner.cpp
   LINE:    818
   CODE:    _p_XMLExcepts__Codes=SCALAR(0x129590e0)
   MESSAGE: The call to scanNext() is illegal at this time

Not exactly what I would call a useful error msg... What is
scanNext()? The exception is because of an invalid scan token, but I
don't know why a SAXParseException would cause the parse token to
become invalid.

I'm getting the sense that when Xerces' Parsers throw exceptions,
they are left in a fundamentally unstable state that cannot be
restored, and so one should *never* attempt to reuse a parser
instance. 

I hope that I'm wrong, but I can't seem to get this working. Help is
appreciated. 

jas.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to