00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #if !defined(XERCESC_INCLUDE_GUARD_XERCESDOMPARSER_HPP)
00023 #define XERCESC_INCLUDE_GUARD_XERCESDOMPARSER_HPP
00024
00025
00026 #include <xercesc/parsers/AbstractDOMParser.hpp>
00027 #include <xercesc/validators/common/Grammar.hpp>
00028
00029 XERCES_CPP_NAMESPACE_BEGIN
00030
00031
00032 class EntityResolver;
00033 class ErrorHandler;
00034 class XMLEntityResolver;
00035 class XMLResourceIdentifier;
00036
00047 class PARSERS_EXPORT XercesDOMParser : public AbstractDOMParser
00048 {
00049 public :
00050
00051
00052
00053
00071 XercesDOMParser
00072 (
00073 XMLValidator* const valToAdopt = 0
00074 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
00075 , XMLGrammarPool* const gramPool = 0
00076 );
00077
00081 virtual ~XercesDOMParser();
00082
00084
00085
00086
00087
00088
00089
00092
00100 ErrorHandler* getErrorHandler();
00101
00109 const ErrorHandler* getErrorHandler() const;
00110
00118 EntityResolver* getEntityResolver();
00119
00127 const EntityResolver* getEntityResolver() const;
00128
00137 XMLEntityResolver* getXMLEntityResolver();
00138
00147 const XMLEntityResolver* getXMLEntityResolver() const;
00148
00159 bool isCachingGrammarFromParse() const;
00160
00171 bool isUsingCachedGrammarInParse() const;
00172
00179 Grammar* getGrammar(const XMLCh* const nameSpaceKey);
00180
00186 Grammar* getRootGrammar();
00187
00194 const XMLCh* getURIText(unsigned int uriId) const;
00195
00202 XMLFilePos getSrcOffset() const;
00203
00211 bool getIgnoreCachedDTD() const;
00212
00214
00215
00216
00217
00218
00219
00222
00236 void setErrorHandler(ErrorHandler* const handler);
00237
00254 void setEntityResolver(EntityResolver* const handler);
00255
00273 void setXMLEntityResolver(XMLEntityResolver* const handler);
00274
00292 void cacheGrammarFromParse(const bool newState);
00293
00312 void useCachedGrammarInParse(const bool newState);
00313
00328 void setIgnoreCachedDTD(const bool newValue);
00329
00331
00332
00333
00334
00335
00361 void resetDocumentPool();
00362
00364
00365
00366
00367
00368
00371
00396 virtual void error
00397 (
00398 const unsigned int errCode
00399 , const XMLCh* const msgDomain
00400 , const XMLErrorReporter::ErrTypes errType
00401 , const XMLCh* const errorText
00402 , const XMLCh* const systemId
00403 , const XMLCh* const publicId
00404 , const XMLFileLoc lineNum
00405 , const XMLFileLoc colNum
00406 );
00407
00416 virtual void resetErrors();
00418
00419
00420
00421
00422
00423
00426
00439 virtual void endInputSource(const InputSource& inputSource);
00440
00456 virtual bool expandSystemId
00457 (
00458 const XMLCh* const systemId
00459 , XMLBuffer& toFill
00460 );
00461
00470 virtual void resetEntities();
00471
00488 virtual InputSource* resolveEntity
00489 (
00490 XMLResourceIdentifier* resourceIdentifier
00491 );
00492
00505 virtual void startInputSource(const InputSource& inputSource);
00506
00508
00509
00510
00511
00512
00541 Grammar* loadGrammar(const InputSource& source,
00542 const Grammar::GrammarType grammarType,
00543 const bool toCache = false);
00544
00569 Grammar* loadGrammar(const XMLCh* const systemId,
00570 const Grammar::GrammarType grammarType,
00571 const bool toCache = false);
00572
00596 Grammar* loadGrammar(const char* const systemId,
00597 const Grammar::GrammarType grammarType,
00598 const bool toCache = false);
00599
00603 void resetCachedGrammarPool();
00604
00606
00607
00608 private :
00609
00610
00611
00612 void resetParse();
00613
00614
00615
00616
00617 XercesDOMParser(const XercesDOMParser&);
00618 XercesDOMParser& operator=(const XercesDOMParser&);
00619
00620
00621
00622
00623
00624
00625
00626
00627
00628
00629 EntityResolver* fEntityResolver;
00630 XMLEntityResolver* fXMLEntityResolver;
00631 ErrorHandler* fErrorHandler;
00632 };
00633
00634
00635
00636
00637
00638
00639 inline void XercesDOMParser::endInputSource(const InputSource&)
00640 {
00641
00642 }
00643
00644 inline bool XercesDOMParser::expandSystemId(const XMLCh* const, XMLBuffer&)
00645 {
00646
00647 return false;
00648 }
00649
00650 inline void XercesDOMParser::resetEntities()
00651 {
00652
00653 }
00654
00655 inline void XercesDOMParser::startInputSource(const InputSource&)
00656 {
00657
00658 }
00659
00660
00661
00662
00663
00664 inline ErrorHandler* XercesDOMParser::getErrorHandler()
00665 {
00666 return fErrorHandler;
00667 }
00668
00669 inline const ErrorHandler* XercesDOMParser::getErrorHandler() const
00670 {
00671 return fErrorHandler;
00672 }
00673
00674 inline EntityResolver* XercesDOMParser::getEntityResolver()
00675 {
00676 return fEntityResolver;
00677 }
00678
00679 inline const EntityResolver* XercesDOMParser::getEntityResolver() const
00680 {
00681 return fEntityResolver;
00682 }
00683
00684 inline XMLEntityResolver* XercesDOMParser::getXMLEntityResolver()
00685 {
00686 return fXMLEntityResolver;
00687 }
00688
00689 inline const XMLEntityResolver* XercesDOMParser::getXMLEntityResolver() const
00690 {
00691 return fXMLEntityResolver;
00692 }
00693
00694 XERCES_CPP_NAMESPACE_END
00695
00696 #endif