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 + -
显示快捷键?