38 : m_throwErrors( throwErrors ), m_doSchema( false ) {
42 { XMLPlatformUtils::Initialize(); }
catch (
const XMLException& toCatch )
44 char* charMsg = XMLString::transcode( toCatch.getMessage() );
45 std::string msg = std::string( charMsg );
46 XMLString::release( &charMsg );
48 std::string errMsg(
"Error during Xerces-c Initialization: \n" );
49 errMsg +=
" Exception message: ";
54 std::cerr << errMsg << std::endl;
60 m_parser =
new XercesDOMParser();
66 m_parser->setValidationScheme( AbstractDOMParser::Val_Auto );
74 m_parser->setXMLEntityResolver( m_resolver );
75 m_parser->setErrorHandler( m_errorHandler );
79 m_parser->setCreateEntityReferenceNodes(
false );
85 m_parser->setIncludeIgnorableWhitespace(
false );
104 XERCES_CPP_NAMESPACE_USE
106 m_errorsOccurred =
false;
110 std::string fname( filename );
114 std::string errMsg(
"xmlBase::XmlParser::parse " );
115 errMsg +=
"Filename arg. contained untranslatable env. variables";
119 std::cerr << errMsg << std::endl;
128 XMLCh* filenameXMLCh = XMLString::transcode( fname.c_str() );
129 LocalFileInputSource fileSource( filenameXMLCh );
130 m_parser->parse( fileSource );
131 XMLString::release( &filenameXMLCh );
132 }
catch (
const XMLException& e )
134 char* charMsg = XMLString::transcode( e.getMessage() );
135 std::string msg = std::string( charMsg );
136 XMLString::release( &charMsg );
137 std::string errMsg(
"xmlBase::XmlParser::parse " );
138 errMsg +=
"Error occurred while parsing file ";
140 m_errorsOccurred =
true;
150 std::cerr << errMsg << std::endl <<
"Message: " << msg << std::endl;
155 if ( m_errorHandler->getFatalCount() + m_errorHandler->getErrorCount() )
161 if ( docType != std::string(
"" ) )
163 bool ok = checkDocType( m_parser->getDocument(), docType );
165 if ( ok )
return m_parser->getDocument();
172 return m_parser->getDocument();
178 XERCES_CPP_NAMESPACE_USE
181 m_errorsOccurred =
false;
185 XMLCh* buffer = XMLString::transcode( input.c_str() );
188 unsigned int byteCount =
sizeof( XMLCh ) * input.length();
190 MemBufInputSource source( (
const unsigned char*)buffer, byteCount, &fakeid,
false );
191 m_parser->parse( source );
192 XMLString::release( &buffer );
193 }
catch (
const XMLException& e )
195 char* charMsg = XMLString::transcode( e.getMessage() );
196 std::string msg = std::string( charMsg );
197 XMLString::release( &charMsg );
198 m_errorsOccurred =
true;
201 std::string errMsg(
"xmlBase::XmlParser::parse " );
202 errMsg +=
"An error occurred while parsing MemBufInputSource\n Message: ";
206 std::cerr << errMsg << std::endl;
210 std::cerr <<
"An error occurred while parsing MemBufInputSource\n Message: " << msg
215 if ( m_errorHandler->getFatalCount() + m_errorHandler->getErrorCount() )
222 if ( docType != std::string(
"" ) )
224 bool ok = checkDocType( m_parser->getDocument(), docType );
226 if ( ok )
return m_parser->getDocument();
233 return m_parser->getDocument();