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]