00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
00062 #if !defined(XercesDOMParser_HPP)
00063 #define XercesDOMParser_HPP
00064 
00065 
00066 #include <xercesc/parsers/AbstractDOMParser.hpp>
00067 
00068 XERCES_CPP_NAMESPACE_BEGIN
00069 
00070 
00071 class EntityResolver;
00072 class ErrorHandler;
00073 class Grammar;
00074 class XMLEntityResolver;
00075 class XMLResourceIdentifier;
00076 
00087 class  XercesDOMParser : public AbstractDOMParser
00088 {
00089 public :
00090     
00091     
00092     
00093 
00111     XercesDOMParser
00112     (
00113           XMLValidator* const   valToAdopt = 0
00114         , MemoryManager* const  manager = XMLPlatformUtils::fgMemoryManager
00115         , XMLGrammarPool* const gramPool = 0        
00116     );
00117 
00121     virtual ~XercesDOMParser();
00122 
00124 
00125 
00126     
00127     
00128     
00129 
00132 
00140     ErrorHandler* getErrorHandler();
00141 
00149     const ErrorHandler* getErrorHandler() const;
00150 
00158     EntityResolver* getEntityResolver();
00159 
00167     const EntityResolver* getEntityResolver() const;
00168 
00177     XMLEntityResolver* getXMLEntityResolver();
00178  
00187     const XMLEntityResolver* getXMLEntityResolver() const;
00188 
00199     bool isCachingGrammarFromParse() const;
00200 
00211     bool isUsingCachedGrammarInParse() const;
00212 
00219     Grammar* getGrammar(const XMLCh* const nameSpaceKey);
00220 
00226     Grammar* getRootGrammar();
00227 
00234     const XMLCh* getURIText(unsigned int uriId) const;
00235 
00241     unsigned int getSrcOffset() const;
00242 
00244 
00245 
00246     
00247     
00248     
00249 
00252 
00266     void setErrorHandler(ErrorHandler* const handler);
00267 
00284     void setEntityResolver(EntityResolver* const handler);
00285 
00303     void setXMLEntityResolver(XMLEntityResolver* const handler);
00304 
00322     void cacheGrammarFromParse(const bool newState);
00323 
00342     void useCachedGrammarInParse(const bool newState);
00343 
00345 
00346     
00347     
00348     
00349 
00375     void resetDocumentPool();
00376 
00378 
00379     
00380     
00381     
00382 
00385 
00410     virtual void error
00411     (
00412         const   unsigned int                errCode
00413         , const XMLCh* const                msgDomain
00414         , const XMLErrorReporter::ErrTypes  errType
00415         , const XMLCh* const                errorText
00416         , const XMLCh* const                systemId
00417         , const XMLCh* const                publicId
00418         , const XMLSSize_t                  lineNum
00419         , const XMLSSize_t                  colNum
00420     );
00421 
00430     virtual void resetErrors();
00432 
00433 
00434     
00435     
00436     
00437 
00440 
00453     virtual void endInputSource(const InputSource& inputSource);
00454 
00470     virtual bool expandSystemId
00471     (
00472         const   XMLCh* const    systemId
00473         ,       XMLBuffer&      toFill
00474     );
00475 
00484     virtual void resetEntities();
00485 
00509     virtual InputSource* resolveEntity
00510     (
00511         const   XMLCh* const    publicId
00512         , const XMLCh* const    systemId
00513         , const XMLCh* const    baseURI = 0
00514     );
00515 
00532     virtual InputSource* resolveEntity
00533     (
00534         XMLResourceIdentifier* resourceIdentifier
00535     );
00536 
00549     virtual void startInputSource(const InputSource& inputSource);
00550 
00552 
00553     
00554     
00555     
00556 
00586     Grammar* loadGrammar(const InputSource& source,
00587                          const short grammarType,
00588                          const bool toCache = false);
00589 
00615     Grammar* loadGrammar(const XMLCh* const systemId,
00616                          const short grammarType,
00617                          const bool toCache = false);
00618 
00643     Grammar* loadGrammar(const char* const systemId,
00644                          const short grammarType,
00645                          const bool toCache = false);
00646 
00650     void resetCachedGrammarPool();
00651 
00653 
00654 
00655 private :
00656     
00657     
00658     
00659     XercesDOMParser(const XercesDOMParser&);
00660     XercesDOMParser& operator=(const XercesDOMParser&);
00661 
00662     
00663     
00664     
00665     
00666     
00667     
00668     
00669     
00670     
00671     EntityResolver*          fEntityResolver;
00672     XMLEntityResolver*       fXMLEntityResolver;
00673     ErrorHandler*            fErrorHandler;
00674 };
00675 
00676 
00677 
00678 
00679 
00680 
00681 inline void XercesDOMParser::endInputSource(const InputSource&)
00682 {
00683     
00684 }
00685 
00686 inline bool XercesDOMParser::expandSystemId(const XMLCh* const, XMLBuffer&)
00687 {
00688     
00689     return false;
00690 }
00691 
00692 inline void XercesDOMParser::resetEntities()
00693 {
00694     
00695 }
00696 
00697 inline void XercesDOMParser::startInputSource(const InputSource&)
00698 {
00699     
00700 }
00701 
00702 
00703 
00704 
00705 
00706 inline ErrorHandler* XercesDOMParser::getErrorHandler()
00707 {
00708     return fErrorHandler;
00709 }
00710 
00711 inline const ErrorHandler* XercesDOMParser::getErrorHandler() const
00712 {
00713     return fErrorHandler;
00714 }
00715 
00716 inline EntityResolver* XercesDOMParser::getEntityResolver()
00717 {
00718     return fEntityResolver;
00719 }
00720 
00721 inline const EntityResolver* XercesDOMParser::getEntityResolver() const
00722 {
00723     return fEntityResolver;
00724 }
00725 
00726 inline XMLEntityResolver* XercesDOMParser::getXMLEntityResolver()
00727 {
00728     return fXMLEntityResolver;
00729 }
00730 
00731 inline const XMLEntityResolver* XercesDOMParser::getXMLEntityResolver() const
00732 {
00733     return fXMLEntityResolver;
00734 }
00735 
00736 XERCES_CPP_NAMESPACE_END
00737 
00738 #endif