Of course. I had forgotten that the DOMDocument class inherited from
the DOMNode class. Everything makes sense now.

Thanks for your help.

a


2008/10/30 Alberto Massari <[EMAIL PROTECTED]>:
> Hi Alain,
> the XML header is written when you write the entire document, not when you
> write the DTD and the root element separately. You should use
>
>  theSerializer->write(doc, theOutput);
>
> Alberto
>
>
>
> Alain Leblanc wrote:
>>
>> Here's a sample program. It's short enough that I can put it here. I'm
>> not sure the attachment would make it through:
>>
>> =====================================================
>>
>> #include <iostream>
>> #include <xercesc/dom/DOM.hpp>
>> #include <xercesc/util/XMLString.hpp>
>> #include <xercesc/framework/LocalFileFormatTarget.hpp>
>>
>> XERCES_CPP_NAMESPACE_USE
>> using namespace std;
>>
>> // StrXML class copied from Xerces-2.8 distro.
>>
>> class StrXML
>> {
>> public :
>>    //
>> -----------------------------------------------------------------------
>>    //  Constructors and Destructor
>>    //
>> -----------------------------------------------------------------------
>>    StrXML(const char* const toTranscode)
>>    {
>>        // Call the private transcoding method
>>        fLocalForm = XMLString::transcode(toTranscode);
>>    }
>>
>>    ~StrXML()
>>    {
>>        XMLString::release(&fLocalForm);
>>    }
>>
>>
>>    //
>> -----------------------------------------------------------------------
>>    //  Getter methods
>>    //
>> -----------------------------------------------------------------------
>>    const XMLCh* utf16() const
>>    {
>>        return fLocalForm;
>>    }
>> private :
>>    //
>> -----------------------------------------------------------------------
>>    //  Private data members
>>    //
>>    //  fLocalForm
>>    //      This is the local code page form of the string.
>>    //
>> -----------------------------------------------------------------------
>>    XMLCh*   fLocalForm;
>>
>> };
>>
>>
>> int main (int , char **) {
>>  XMLPlatformUtils::Initialize();
>>  DOMImplementation *impl =
>> DOMImplementationRegistry::getDOMImplementation(StrXML("").utf16());
>>  if (impl == NULL)
>>    throw string("Implementation is NULL in create document.");
>>
>>  // Create the document with one tag
>>  DOMDocument *doc = impl->createDocument(0, StrXML("session").utf16(),
>>
>>  impl->createDocumentType(StrXML("dummy").utf16(),
>>                                                                   0,
>>                                                                   0));
>>
>>  DOMLSSerializer *theSerializer =
>> ((DOMImplementationLS*)impl)->createLSSerializer();
>>  DOMLSOutput *theOutput = ((DOMImplementationLS*)impl)->createLSOutput();
>>
>>  DOMConfiguration *configuration = theSerializer->getDomConfig();
>>
>>  // Have a nice output
>>  if (configuration->canSetParameter(XMLUni::fgDOMWRTFormatPrettyPrint,
>> true))
>>    configuration->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true);
>>
>>  // Add the declaration?
>>  if (configuration->canSetParameter(XMLUni::fgDOMXMLDeclaration, true))
>>    configuration->setParameter(XMLUni::fgDOMXMLDeclaration, true);
>>
>>
>>
>>  LocalFileFormatTarget *myFormTarget =
>>    new LocalFileFormatTarget(StrXML("outfile.xml").utf16());
>>  theOutput->setByteStream(myFormTarget);
>>  if (doc->getDoctype() == NULL) {
>>    cerr << "The doc type is null.\n";
>>    exit(-1);
>>  }
>>  theSerializer->write(doc->getDoctype(), theOutput);
>>  theSerializer->write(doc->getDocumentElement(), theOutput);
>>  theOutput->release();
>>  theSerializer->release();
>>  XMLPlatformUtils::Terminate();
>>
>> }
>>
>>
>> =====================================================
>>
>>
>>
>
>

Reply via email to