No, this is not the way to do things with Xalan, unless you want to go
through the fuss of wrapping Xalan's tree in the Xerces DOM.  Also, this:

   m_impl =
   DOMImplementationRegistry::getDOMImplementation(XMLString::transcode("LS"));

is a memory leak, since the string returned from XMLString::transcode()
must be deleted by the caller.

Instead, try this code.  See the SerializeNodeSet sample program for more
details, or grep the code for some of these classes.


   #include <iostream.h>

   #include <PlatformSupport/XalanOutputStreamPrintWriter.hpp>
   #include <PlatformSupport/XalanStdOutputStream.hpp>

   #include <XMLSupport/FormatterToXML.hpp>
   #include <XMLSupport/FormatterTreeWalker.hpp>

   void
   foo(const XalanDocumentBuilder&  builder)
   {
       XalanStdOutputStream          theStream(cout);
       XalanOutputStreamPrintWriter  thePrintWriter(theStream);

       FormatterToXML       theFormatter(thePrintWriter);
       FormatterTreeWalker  theWalker(theFormatter);

       theWalker.traverse(builder.getDocument());
   }

Dave



                                                                                
                                        
                      Andreas Rieder                                            
                                        
                      <andreas.rieder@         To:      
[email protected]                                    
                      allianz.at>              cc:      (bcc: David N 
Bertoni/Cambridge/IBM)                            
                      Sent by: news            Subject: Re: Write XML-Document 
to File                                  
                      <[EMAIL PROTECTED]                                        
                                          
                      .org>                                                     
                                        
                                                                                
                                        
                                                                                
                                        
                      03/17/2003 08:37                                          
                                        
                      AM                                                        
                                        
                                                                                
                                        



Kern P.,DP ITS,SMA,M wrote:
> Hello everybody,
>
> i tried the DocumentBuilder example from the samples of Xalan-C.
>
> Now my DocumentBuilder holds my XML document and i don't know how to
write
> this document to a file for testing purposes.
>
> Can anybody help me please?
>
> Thanks in advance.
>
> Cheers
>
> Pete
>

1) Create a new save FileFormatTarget

std::auto_ptr<XMLFormatTarget> FileTarget(new
LocalFileFormatTarget("C:\\Temp\\Test.xml"));

2) Get the Serializer from the Implementation

m_impl =
DOMImplementationRegistry::getDOMImplementation(XMLString::transcode("LS"));


...
DOMWriter* theSerializer = m_impl->createDOMWriter();

3) Write the whole Document to the File

DOMDocument* m_doc;
m_doc = m_impl->createDocument(...);

...
theSerializer->writeNode(FileTarget.get(), *m_doc)

4) Don't forget to catch any possible exceptions!

;-) AnR




Reply via email to