Example Main Function

This is a sample context data structure:

/* SAX callbacks - display callback events into file */
int testcase_read_15(JCHAR *m_infile, JCHAR *m_outfile)
{
 XRCS_Status XRCSStatus;
 XRCS_hParser hParser;
 ZCALLBACK_VALUES zCbValues;
 PCALLBACK_VALUES pCbValues = &zCbValues;

 /* initialize context structure */
 pCbValues->fp = NULL;
 pCbValues->szIndentString = _J(" ");
 pCbValues->nIndentLevel = 0;

 /* open display file */
 pCbValues->fp = jdeFopen(m_outfile, _J("w"));

 if (pCbValues->fp != NULL)
 {
  XRCSStatus = XRCS_initEngine();
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  XRCSStatus = XRCS_getParserByType(&hParser, XRCS_SAX_PARSER_TYPE);
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  XRCSStatus = XRCS_setCallback(hParser, XRCS_CALLBACK_START_DOC,
   (void *) cb_startDoc_Display, (void *) pCbValues);
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  /* set up callbacks for the SAX parser */
  XRCSStatus = XRCS_setCallback(hParser, XRCS_CALLBACK_END_DOC,
   (void *) cb_endDoc_Display, (void *) pCbValues);
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  XRCSStatus = XRCS_setCallback(hParser, XRCS_CALLBACK_START_ELEM,
   (void *) cb_startElement_Display, (void *) pCbValues);
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  XRCSStatus = XRCS_setCallback(hParser, XRCS_CALLBACK_END_ELEM,
   (void *) cb_endElement_Display, (void *) pCbValues);
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  XRCSStatus = XRCS_setCallback(hParser, XRCS_CALLBACK_CHARACTERS,
   (void *) cb_characters_Display, (void *) pCbValues);
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  XRCSStatus = XRCS_setCallback(hParser,
   XRCS_CALLBACK_IGNORABLE_WHITESPACE,
   (void *) cb_ignorableWhitespace_Display, (void *) pCbValues);
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  XRCSStatus = XRCS_setCallback(hParser, XRCS_CALLBACK_FATAL_ERROR,
   (void *) cb_fatalError_Display, (void *) pCbValues);
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  XRCSStatus = XRCS_setCallback(hParser, XRCS_CALLBACK_ERROR,
   (void *) cb_error_Display, (void *) pCbValues);
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  XRCSStatus = XRCS_setCallback(hParser, XRCS_CALLBACK_WARNING,
   (void *) cb_warning_Display, (void *) pCbValues);
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  /* now do the actual parsing */
  XRCSStatus = XRCS_parseXMLFile(hParser,m_infile, NULL);
  if(XRCSStatus != XRCS_SUCCESS) {
   return -1;
  }

  XRCSStatus = XRCS_freeParser(hParser);
  XRCSStatus = XRCS_terminateEngine();

  /* close display file */
  jdeFclose(pCbValues->fp);
 }
 else
 {
  /* could not open display file */
  return -1; }

 return 0;
}