Pages

Tuesday, January 18, 2005

Xerces-C++ - Parse a xml buffer from a memory buffer

Error_t Parser::ParseFromMemBuffer(const char *buffer) {
  if (! buffer) {
    return -1;
  }
...
errorsOcurred = false;
MemBufInputSource* inputBuffer = new MemBufInputSource ((const XMLByte*)buffer,
              strlen(buffer),
              "gMemBufId",
              false);

try {
  parser->parse(*inputBuffer);
}
  catch (const XMLException& e) {
    char *errMsg = XMLString::transcode(e.getMessage());
    cerr << "[ERROR] XMLException: An error occurred during parsing: " << errMsg << endl;
    errorsOcurred = true;
    XMLString::release(&errMsg);
  }
  catch (const DOMException& e) {
    char *errMsg = XMLString::transcode(e.msg);
    cerr << "[ERROR] DOMException: An error occurred during parsing: " << endl;
    errorsOcurred = true;
    XMLString::release(&errMsg);
  }
  catch (...) {
    cerr << "[ERROR] UNKNOWN: An error occurred during parsing" << endl;
    errorsOcurred = true;
  }

  if (errorsOcurred) {
    return -1;
  }
  doc = parser->getDocument();
  root = doc->getDocumentElement();
  return 0;
}

No comments: