00001 // $Header: /bes/bes/BossCvs/Calibration/xmlBase/xmlBase/XmlParser.h,v 1.1.1.1 2005/10/17 06:10:27 maqm Exp $ 00002 // Author: J. Bogart 00003 00004 #ifndef xmlBase_XmlParser_h 00005 #define xmlBase_XmlParser_h 00006 00007 #include "xmlBase/XmlErrorHandler.h" 00008 // following indirectly includes DOMDocument, DOMElement... 00009 #include <xercesc/parsers/XercesDOMParser.hpp> 00010 #include <string> 00011 #include <iosfwd> 00012 00013 00014 namespace xmlBase { 00017 class EResolver; 00018 using XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument; 00019 using XERCES_CPP_NAMESPACE_QUALIFIER XercesDOMParser; 00020 00021 00022 class XmlParser { 00023 public: 00024 XmlParser(bool throwErrors = false); 00025 00027 void doSchema(bool doit); 00028 ~XmlParser(); 00029 00031 DOMDocument* parse(const char* const filename, 00032 const std::string& docType=std::string("")); 00033 00034 00036 DOMDocument* parse(const std::string& buffer, 00037 const std::string& docType=std::string("") ); 00038 00041 void reset() {m_parser->reset();} 00042 private: 00044 XercesDOMParser* m_parser; 00045 XmlErrorHandler* m_errorHandler; 00047 EResolver* m_resolver; 00048 bool m_throwErrors; 00049 bool m_errorsOccurred; 00050 bool m_doSchema; 00051 static int didInit; 00052 }; 00053 } 00054 #endif