tng         2002/11/12 09:51:10

  Modified:    c/samples/DOMPrint DOMPrint.cpp
  Log:
  DOM Message: make use of the non-standard extension 
DOMImplementation::loadDOMExceptionMsg
  to load the default error text message for the correspond Exception Code.
  
  Revision  Changes    Path
  1.52      +77 -71    xml-xerces/c/samples/DOMPrint/DOMPrint.cpp
  
  Index: DOMPrint.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/samples/DOMPrint/DOMPrint.cpp,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- DOMPrint.cpp      29 Oct 2002 21:54:05 -0000      1.51
  +++ DOMPrint.cpp      12 Nov 2002 17:51:10 -0000      1.52
  @@ -428,8 +428,15 @@
   
       catch (const DOMException& e)
       {
  -       cerr << "A DOM error occurred during parsing\n   DOMException code: "
  -             << e.code << endl;
  +        const unsigned int maxChars = 2047;
  +        XMLCh errText[maxChars + 1];
  +
  +        cerr << "\nDOM Error during parsing: '" << gXmlFile << "'\n"
  +             << "DOMException code is:  " << e.code << endl;
  +
  +        if (DOMImplementation::loadDOMExceptionMsg(e.code, errText, maxChars))
  +             cerr << "Message is: " << StrX(errText) << endl;
  +
           errorsOccured = true;
       }
   
  @@ -442,84 +449,83 @@
       // If the parse was successful, output the document data from the DOM tree
       if (!errorsOccured && !errReporter->getSawErrors())
       {
  -             DOMPrintFilter   *myFilter = 0;
  +        DOMPrintFilter   *myFilter = 0;
   
           try
           {
  -                     // get a serializer, an instance of DOMWriter
  -                     XMLCh tempStr[100];
  -                     XMLString::transcode("LS", tempStr, 99);
  -                     DOMImplementation *impl          = 
DOMImplementationRegistry::getDOMImplementation(tempStr);
  -                     DOMWriter         *theSerializer = 
((DOMImplementationLS*)impl)->createDOMWriter();
  -
  -                     // set user specified end of line sequence and output encoding
  -                     theSerializer->setNewLine(gMyEOLSequence);
  -                     theSerializer->setEncoding(gOutputEncoding);
  -
  -                     // plug in user's own filter
  -                     if (gUseFilter)
  -                     {
  -                             // even we say to show attribute, but the DOMWriter
  -                             // will not show attribute nodes to the filter as
  -                             // the specs explicitly says that DOMWriter shall
  -                             // NOT show attributes to DOMWriterFilter.
  -                             //
  -                             // so DOMNodeFilter::SHOW_ATTRIBUTE has no effect.
  -                             // same DOMNodeFilter::SHOW_DOCUMENT_TYPE, no effect.
  -                             //
  -                             myFilter = new 
DOMPrintFilter(DOMNodeFilter::SHOW_ELEMENT   |
  +            // get a serializer, an instance of DOMWriter
  +            XMLCh tempStr[100];
  +            XMLString::transcode("LS", tempStr, 99);
  +            DOMImplementation *impl          = 
DOMImplementationRegistry::getDOMImplementation(tempStr);
  +            DOMWriter         *theSerializer = 
((DOMImplementationLS*)impl)->createDOMWriter();
  +
  +            // set user specified end of line sequence and output encoding
  +            theSerializer->setNewLine(gMyEOLSequence);
  +            theSerializer->setEncoding(gOutputEncoding);
  +
  +            // plug in user's own filter
  +            if (gUseFilter)
  +            {
  +                // even we say to show attribute, but the DOMWriter
  +                // will not show attribute nodes to the filter as
  +                // the specs explicitly says that DOMWriter shall
  +                // NOT show attributes to DOMWriterFilter.
  +                //
  +                // so DOMNodeFilter::SHOW_ATTRIBUTE has no effect.
  +                // same DOMNodeFilter::SHOW_DOCUMENT_TYPE, no effect.
  +                //
  +                myFilter = new DOMPrintFilter(DOMNodeFilter::SHOW_ELEMENT   |
                                                 DOMNodeFilter::SHOW_ATTRIBUTE |
  -                                              DOMNodeFilter::SHOW_DOCUMENT_TYPE
  -                                                                                    
   );
  -                             theSerializer->setFilter(myFilter);
  -                     }
  -
  -                     // plug in user's own error handler
  -                     DOMErrorHandler *myErrorHandler = new DOMPrintErrorHandler();
  -                     theSerializer->setErrorHandler(myErrorHandler);
  -
  -                     // set feature if the serializer supports the feature/mode
  -                     if 
(theSerializer->canSetFeature(XMLUni::fgDOMWRTSplitCdataSections, gSplitCdataSections))
  -                             
theSerializer->setFeature(XMLUni::fgDOMWRTSplitCdataSections, gSplitCdataSections);
  -                     
  -                     if 
(theSerializer->canSetFeature(XMLUni::fgDOMWRTDiscardDefaultContent, 
gDiscardDefaultContent))
  -                             
theSerializer->setFeature(XMLUni::fgDOMWRTDiscardDefaultContent, 
gDiscardDefaultContent);
  -
  -                     if 
(theSerializer->canSetFeature(XMLUni::fgDOMWRTFormatPrettyPrint, gFormatPrettyPrint))
  -                             
theSerializer->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, gFormatPrettyPrint);
  -
  -            //
  -                     // Plug in a format target to receive the resultant
  -                     // XML stream from the serializer.
  -            //
  -                     // StdOutFormatTarget prints the resultant XML stream
  -                     // to stdout once it receives any thing from the serializer.
  -                     //
  -      XMLFormatTarget *myFormTarget;
  -      if (goutputfile)
  -         myFormTarget = new LocalFileFormatTarget(goutputfile);
  -      else
  -         myFormTarget = new StdOutFormatTarget();
  -
  -                     // get the DOM representation
  -                     DOMNode                     *doc = parser->getDocument();
  -
  -                     //
  -                     // do the serialization through DOMWriter::writeNode();
  -                     //
  -                     theSerializer->writeNode(myFormTarget, *doc);
  -
  -                     delete theSerializer;
  -
  -            //
  -                     // Filter, formatTarget and error handler
  -                     // are NOT owned by the serializer.
  -                     //
  -                     delete myFormTarget;
  -                     delete myErrorHandler;
  +                                              DOMNodeFilter::SHOW_DOCUMENT_TYPE);
  +                theSerializer->setFilter(myFilter);
  +            }
  +
  +            // plug in user's own error handler
  +            DOMErrorHandler *myErrorHandler = new DOMPrintErrorHandler();
  +            theSerializer->setErrorHandler(myErrorHandler);
  +
  +            // set feature if the serializer supports the feature/mode
  +            if (theSerializer->canSetFeature(XMLUni::fgDOMWRTSplitCdataSections, 
gSplitCdataSections))
  +                theSerializer->setFeature(XMLUni::fgDOMWRTSplitCdataSections, 
gSplitCdataSections);
  +
  +            if (theSerializer->canSetFeature(XMLUni::fgDOMWRTDiscardDefaultContent, 
gDiscardDefaultContent))
  +                theSerializer->setFeature(XMLUni::fgDOMWRTDiscardDefaultContent, 
gDiscardDefaultContent);
  +
  +            if (theSerializer->canSetFeature(XMLUni::fgDOMWRTFormatPrettyPrint, 
gFormatPrettyPrint))
  +                theSerializer->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, 
gFormatPrettyPrint);
  +
  +            //
  +            // Plug in a format target to receive the resultant
  +            // XML stream from the serializer.
  +            //
  +            // StdOutFormatTarget prints the resultant XML stream
  +            // to stdout once it receives any thing from the serializer.
  +            //
  +            XMLFormatTarget *myFormTarget;
  +            if (goutputfile)
  +                myFormTarget = new LocalFileFormatTarget(goutputfile);
  +            else
  +                myFormTarget = new StdOutFormatTarget();
  +
  +            // get the DOM representation
  +            DOMNode                     *doc = parser->getDocument();
  +
  +            //
  +            // do the serialization through DOMWriter::writeNode();
  +            //
  +            theSerializer->writeNode(myFormTarget, *doc);
  +
  +            delete theSerializer;
  +
  +            //
  +            // Filter, formatTarget and error handler
  +            // are NOT owned by the serializer.
  +            //
  +            delete myFormTarget;
  +            delete myErrorHandler;
   
  -                     if (gUseFilter)
  -                             delete myFilter;        
  +            if (gUseFilter)
  +                delete myFilter;
   
           }
           catch (XMLException& e)
  @@ -549,8 +555,8 @@
       // And call the termination method
       XMLPlatformUtils::Terminate();
   
  -     delete (void *)gOutputEncoding;        // const problems.
  -     delete (void *)gMyEOLSequence;         // const problems.
  +    delete (void *)gOutputEncoding;        // const problems.
  +    delete (void *)gMyEOLSequence;         // const problems.
   
       return retval;
   }
  
  
  

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

Reply via email to