At 10:38 AM 12/12/2003, you wrote:
I have a Java Program using Xerces & I need to convert the Xerces stuff into
C++ so that our C++ program can reuse the same code.

But I can't seem to get anything using the DefaultHandler class to work.
The XML document is passed to me via a CORBA call, so that it is already in
memory.  But the "Parser" class doesn't seem to work with the DefaultHandler
in this case.

I looked at the source code in your examples & it seems that DefaultHandler
only works with XML read in from a file.  Is this correct?  Is there a way
to do this without a file?  Or must I convert the program to use the more
limited HandlerBase class?  (I have gotten my own stub program to work with
this class)

The sample code I was using to kick of the parse was:

const char * xml = <the xml document>
SAX2XMLReader * parser = XMLReaderFactory::createXMLReader ();
parser->setContextHandler (this);
parser->parse (xml);

But none of the methods in the DefaultHandler class ever get called!
(startElement, characters, etc.)

Curtis

I am using Xerces-c in a way similar to what you are doing. Here is the code I use, from the time I have read the incoming XML into a buffer (a char*) named inputFileStream with length inputStreamSize:


   /* Initialize the parse module */
   XMLPlatformUtils::Initialize();
   XercesDOMParser *parser = new XercesDOMParser;
   DOMTreeErrorReporter *errReporter = new DOMTreeErrorReporter() ;
   /* create a MemBufInputSource to describe
    * the buffer being passed to the parser */
   MemBufInputSource* memBufIS = new MemBufInputSource (
      (const XMLByte*)inputFileStream, inputStreamSize,
      fileName, false) ;
   parser->setErrorHandler(errReporter) ;
   bool errorsOccured = false;

   try {
      parser->parse(*memBufIS);
   }




- Norm -

Moderation in all things, including moderation.


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to