You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by Khaled Noaman <kn...@ca.ibm.com> on 2002/10/15 19:45:12 UTC

Re: DO NOT REPLY [Bug 13447] New: - DOMWriter doesn't work correctly

Hi PeiYong,

Would you please look into that and reply to the guy. It looks to me that it's an
understanding issue and not really a bug.

Khaled

bugzilla@apache.org wrote:

> DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
> RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
> <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13447>.
> ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
> INSERTED IN THE BUG DATABASE.
>
> http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13447
>
> DOMWriter doesn't work correctly
>
>            Summary: DOMWriter doesn't work correctly
>            Product: Xerces-C++
>            Version: 2.1.0
>           Platform: Other
>         OS/Version: Windows NT/2K
>             Status: NEW
>           Severity: Major
>           Priority: Other
>          Component: DOM
>         AssignedTo: xerces-c-dev@xml.apache.org
>         ReportedBy: jlo@hne.nl
>
> I encountered some problems using the DOMWriter:
>
> 1) Layout output XML file
> When I set the 'FormatPrettyPrint' feature and set the 'NewLine' to "\r\n", I
> expect to get a properly layout of XML. But the output is 'one' line with the
> XML.
>
> 2) Very slow in writing
> I'am trying to construct a XML structure with the DOM and write this to a file.
> The constructing of the XML structure takes no more then a few seconds. The
> writing to the file (LocalFileFormatTarget) takes more then 2 minutes for a
> file of +/- 100k !? I tryed a workaround by using the MemBufFormatTarget and
> writing the buffer to a file. This is a lot faster (takes a few seconds), but
> this can't be done with UNICODE strings(?).
>
> 3) Can't write UNICODE (UTF-8)
> I want to write the XML to a file in Unicode with UTF-8 encoding. I can open a
> XML file with UTF-8 encoding correctly. But when I write it to a file it is
> always ANSI and not Unicode.
>
> I use Xerces-C++ in combination with VC++ 6.0 on a Windows 2000 machine.
>
> code sample:
>
> 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( X("\r\n") );
>
>                 // plug in user's own error handler
>                 DOMErrorHandler *myErrorHandler = new CXmlErrorHandler();
>                 theSerializer->setErrorHandler(myErrorHandler);
>
>                 // set feature if the serializer supports the feature/mode
>                 bool gFormatPrettyPrint = true;
>                 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.
>                 //
>                 MemBufFormatTarget *myTarget = new MemBufFormatTarget();
>                         //new LocalFileFormatTarget( strFilename );
>                         //new StdOutFormatTarget();
>
>                 //
>                 // do the serialization through DOMWriter::writeNode();
>                 //
>                 theSerializer->writeNode(myTarget, *m_pDocument);
>
>                 ofstream lFile(strFilename);
>                 lFile << myTarget->getRawBuffer() << endl;
>
>                 delete theSerializer;
>
>                 //
>                 // Filter, formatTarget and error handler
>                 // are NOT owned by the serializer.
>                 //
>                 delete myTarget;
>
>                 bRetval = !((CXmlErrorHandler*)myErrorHandler)->getSawErrors();
>                 delete myErrorHandler;
>
>                 //if (gUseFilter)
>                 //      delete myFilter;
>
>         }
>         catch (XMLException& e)
>         {
>                 cerr << "An error occurred during creation of output
> transcoder. Msg is:"
>                         << endl
>                         << StrX(e.getMessage()) << endl;
>                 bRetval = false;
>         }
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
> For additional commands, e-mail: xerces-c-dev-help@xml.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org