saxparser.cpp
来自「IBM的解析xml的工具Xerces的源代码」· C++ 代码 · 共 1,546 行 · 第 1/3 页
CPP
1,546 行
{ return fScanner->getExternalNoNamespaceSchemaLocation();}SecurityManager* SAXParser::getSecurityManager() const{ return fScanner->getSecurityManager();}bool SAXParser::getLoadExternalDTD() const{ return fScanner->getLoadExternalDTD();}bool SAXParser::isCachingGrammarFromParse() const{ return fScanner->isCachingGrammarFromParse();}bool SAXParser::isUsingCachedGrammarInParse() const{ return fScanner->isUsingCachedGrammarInParse();}bool SAXParser::getCalculateSrcOfs() const{ return fScanner->getCalculateSrcOfs();}bool SAXParser::getStandardUriConformant() const{ return fScanner->getStandardUriConformant();}Grammar* SAXParser::getGrammar(const XMLCh* const nameSpaceKey){ return fGrammarResolver->getGrammar(nameSpaceKey);}Grammar* SAXParser::getRootGrammar(){ return fScanner->getRootGrammar();}const XMLCh* SAXParser::getURIText(unsigned int uriId) const{ return fScanner->getURIText(uriId);}unsigned int SAXParser::getSrcOffset() const{ return fScanner->getSrcOffset();}// ---------------------------------------------------------------------------// SAXParser: Setter methods// ---------------------------------------------------------------------------void SAXParser::setDoNamespaces(const bool newState){ fScanner->setDoNamespaces(newState);}void SAXParser::setGenerateSyntheticAnnotations(const bool newState){ fScanner->setGenerateSyntheticAnnotations(newState);}void SAXParser::setValidateAnnotations(const bool newState){ fScanner->setValidateAnnotations(newState);}void SAXParser::setExitOnFirstFatalError(const bool newState){ fScanner->setExitOnFirstFatal(newState);}void SAXParser::setValidationConstraintFatal(const bool newState){ fScanner->setValidationConstraintFatal(newState);}void SAXParser::setValidationScheme(const ValSchemes newScheme){ if (newScheme == Val_Never) fScanner->setValidationScheme(XMLScanner::Val_Never); else if (newScheme == Val_Always) fScanner->setValidationScheme(XMLScanner::Val_Always); else fScanner->setValidationScheme(XMLScanner::Val_Auto);}void SAXParser::setDoSchema(const bool newState){ fScanner->setDoSchema(newState);}void SAXParser::setValidationSchemaFullChecking(const bool schemaFullChecking){ fScanner->setValidationSchemaFullChecking(schemaFullChecking);}void SAXParser::setIdentityConstraintChecking(const bool identityConstraintChecking){ fScanner->setIdentityConstraintChecking(identityConstraintChecking);}void SAXParser::setExternalSchemaLocation(const XMLCh* const schemaLocation){ fScanner->setExternalSchemaLocation(schemaLocation);}void SAXParser::setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation){ fScanner->setExternalNoNamespaceSchemaLocation(noNamespaceSchemaLocation);}void SAXParser::setExternalSchemaLocation(const char* const schemaLocation){ fScanner->setExternalSchemaLocation(schemaLocation);}void SAXParser::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation){ fScanner->setExternalNoNamespaceSchemaLocation(noNamespaceSchemaLocation);}void SAXParser::setSecurityManager(SecurityManager* const securityManager){ // since this could impact various components, don't permit it to change // during a parse if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); fScanner->setSecurityManager(securityManager);}void SAXParser::setLoadExternalDTD(const bool newState){ fScanner->setLoadExternalDTD(newState);}void SAXParser::cacheGrammarFromParse(const bool newState){ fScanner->cacheGrammarFromParse(newState); if (newState) fScanner->useCachedGrammarInParse(newState);}void SAXParser::useCachedGrammarInParse(const bool newState){ if (newState || !fScanner->isCachingGrammarFromParse()) fScanner->useCachedGrammarInParse(newState);}void SAXParser::setCalculateSrcOfs(const bool newState){ fScanner->setCalculateSrcOfs(newState);}void SAXParser::setStandardUriConformant(const bool newState){ fScanner->setStandardUriConformant(newState);}void SAXParser::useScanner(const XMLCh* const scannerName){ XMLScanner* tempScanner = XMLScannerResolver::resolveScanner ( scannerName , fValidator , fGrammarResolver , fMemoryManager ); if (tempScanner) { tempScanner->setParseSettings(fScanner); tempScanner->setURIStringPool(fURIStringPool); delete fScanner; fScanner = tempScanner; }}void SAXParser::setInputBufferSize(const size_t bufferSize){ fScanner->setInputBufferSize(bufferSize);}// ---------------------------------------------------------------------------// SAXParser: Overrides of the SAX Parser interface// ---------------------------------------------------------------------------void SAXParser::parse(const InputSource& source){ // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); try { fParseInProgress = true; fScanner->scanDocument(source); fParseInProgress = false; } catch(const OutOfMemoryException&) { throw; } catch (...) { fParseInProgress = false; throw; }}void SAXParser::parse(const XMLCh* const systemId){ // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); try { fParseInProgress = true; fScanner->scanDocument(systemId); fParseInProgress = false; } catch(const OutOfMemoryException&) { throw; } catch (...) { fParseInProgress = false; throw; }}void SAXParser::parse(const char* const systemId){ // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); try { fParseInProgress = true; fScanner->scanDocument(systemId); fParseInProgress = false; } catch(const OutOfMemoryException&) { throw; } catch (...) { fParseInProgress = false; throw; }}void SAXParser::setDocumentHandler(DocumentHandler* const handler){ fDocHandler = handler; if (fDocHandler) { // // Make sure we are set as the document handler with the scanner. // We may already be (if advanced handlers are installed), but its // not worthing checking, just do it. // fScanner->setDocHandler(this); } else { // // If we don't have any advanced handlers either, then deinstall us // from the scanner because we don't need document events anymore. // if (!fAdvDHCount) fScanner->setDocHandler(0); }}void SAXParser::setDTDHandler(DTDHandler* const handler){ fDTDHandler = handler; if (fDTDHandler) fScanner->setDocTypeHandler(this); else fScanner->setDocTypeHandler(0);}void SAXParser::setErrorHandler(ErrorHandler* const handler){ // // Store the handler. Then either install or deinstall us as the // error reporter on the scanner. // fErrorHandler = handler; if (fErrorHandler) { fScanner->setErrorReporter(this); fScanner->setErrorHandler(fErrorHandler); } else { fScanner->setErrorReporter(0); fScanner->setErrorHandler(0); }}void SAXParser::setPSVIHandler(PSVIHandler* const handler){ fPSVIHandler = handler; if (fPSVIHandler) { fScanner->setPSVIHandler(fPSVIHandler); } else { fScanner->setPSVIHandler(0); }}void SAXParser::setEntityResolver(EntityResolver* const resolver){ fEntityResolver = resolver; if (fEntityResolver) { fScanner->setEntityHandler(this); fXMLEntityResolver = 0; } else { fScanner->setEntityHandler(0); }}void SAXParser::setXMLEntityResolver(XMLEntityResolver* const resolver){ fXMLEntityResolver = resolver; if (fXMLEntityResolver) { fScanner->setEntityHandler(this); fEntityResolver = 0; } else { fScanner->setEntityHandler(0); }}// ---------------------------------------------------------------------------// SAXParser: Progressive parse methods// ---------------------------------------------------------------------------bool SAXParser::parseFirst( const XMLCh* const systemId , XMLPScanToken& toFill){ // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(systemId, toFill);}bool SAXParser::parseFirst( const char* const systemId , XMLPScanToken& toFill){ // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(systemId, toFill);}bool SAXParser::parseFirst( const InputSource& source , XMLPScanToken& toFill){ // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(source, toFill);}bool SAXParser::parseNext(XMLPScanToken& token){ return fScanner->scanNext(token);}void SAXParser::parseReset(XMLPScanToken& token){ // Reset the scanner fScanner->scanReset(token);}// ---------------------------------------------------------------------------// SAXParser: Overrides of the XMLDocumentHandler interface// ---------------------------------------------------------------------------void SAXParser::docCharacters( const XMLCh* const chars , const unsigned int length , const bool cdataSection){ // Suppress the chars before the root element. if (!fElemDepth) return; // Just map to the SAX document handler if (fDocHandler) fDocHandler->characters(chars, length); // // If there are any installed advanced handlers, then lets call them // with this info. // for (unsigned int index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->docCharacters(chars, length, cdataSection);}void SAXParser::docComment(const XMLCh* const commentText){ // // SAX has no way to report this. But, if there are any installed // advanced handlers, then lets call them with this info. // for (unsigned int index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->docComment(commentText);}void SAXParser::XMLDecl( const XMLCh* const versionStr , const XMLCh* const encodingStr , const XMLCh* const standaloneStr , const XMLCh* const actualEncodingStr ){ // // SAX has no way to report this. But, if there are any installed // advanced handlers, then lets call them with this info. // for (unsigned int index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->XMLDecl( versionStr, encodingStr, standaloneStr, actualEncodingStr );}void SAXParser::docPI( const XMLCh* const target , const XMLCh* const data){ // Just map to the SAX document handler if (fDocHandler) fDocHandler->processingInstruction(target, data); // // If there are any installed advanced handlers, then lets call them // with this info. // for (unsigned int index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->docPI(target, data);}void SAXParser::endDocument(){ if (fDocHandler) fDocHandler->endDocument(); // // If there are any installed advanced handlers, then lets call them // with this info. // for (unsigned int index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->endDocument();}void SAXParser::endElement( const XMLElementDecl& elemDecl , const unsigned int uriId , const bool isRoot , const XMLCh* const elemPrefix){ // Just map to the SAX document handler if (fDocHandler) { if (fScanner->getDoNamespaces()) { if (elemPrefix && *elemPrefix) { fElemQNameBuf.set(elemPrefix); fElemQNameBuf.append(chColon); fElemQNameBuf.append(elemDecl.getBaseName()); fDocHandler->endElement(fElemQNameBuf.getRawBuffer()); } else { fDocHandler->endElement(elemDecl.getBaseName()); } } else fDocHandler->endElement(elemDecl.getFullName()); } // // If there are any installed advanced handlers, then lets call them // with this info. // for (unsigned int index = 0; index < fAdvDHCount; index++)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?