http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2311 *** shadow/2311 Mon Jun 25 10:33:22 2001 --- shadow/2311.tmp.6555 Wed Jun 27 10:44:25 2001 *************** *** 2,9 **** | parseReset throws exception if parseFirst returns false | +----------------------------------------------------------------------------+ | Bug #: 2311 Product: Xerces-C | ! | Status: NEW Version: 1.5 | ! | Resolution: Platform: PC | | Severity: Normal OS/Version: Windows NT/2K | | Priority: Other Component: SAX/SAX2 | +----------------------------------------------------------------------------+ --- 2,9 ---- | parseReset throws exception if parseFirst returns false | +----------------------------------------------------------------------------+ | Bug #: 2311 Product: Xerces-C | ! | Status: RESOLVED Version: 1.5 | ! | Resolution: INVALID Platform: PC | | Severity: Normal OS/Version: Windows NT/2K | | Priority: Other Component: SAX/SAX2 | +----------------------------------------------------------------------------+ *************** *** 28,30 **** --- 28,67 ---- //... } parser.parseReset(token); + + ------- Additional Comments From [EMAIL PROTECTED] 2001-06-27 10:44 ------- + If parseFirst returns false, then it means the scan of the prolog failed and the + token is not going to work on subsequent progressive parse calls which include + both parseNext and parseReset. + + As documented in parseReset API, parseReset is for you to reset the parser if + you exit the loop early before the end of the document is reached. Call + parseReset when you exit the file prematurely of your own accord, because you've + found what you wanted in the file most likely. + + If you exited because of an error (e.g. parseFirst fails), then cleanup will be + done for you automatically and thus it's no need to call parseReset. + + So in your code, it's better do something like this (copied from sample PParse): + + // Create a progressive scan token + XMLPScanToken token; + + if (!parser.parseFirst(xmlFile, token)) + { + cerr << "scanFirst() failed\n" << endl; + return 1; + } + + // + // We started ok, so lets call scanNext() until we find what we want + // or hit the end. + // + bool gotMore = true; + while (gotMore) + gotMore = parser.parseNext(token); + + // + // Reset the parser. + // + parser.parseReset(token); \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
