Hi Vince,
Xerces doesn't currently perform validation of an in-memory DOM tree; but in order to detect validation error you can parse the generated file right after you wrote it.


Alberto

At 10.43 30/12/2004 -0500, Jairam, Roopnaraine wrote:
Hi all,

I have a function that takes a domdocument* and writes it to the xml file. My question is can I verify that the document adheres to my schema before I save it. I have created xml documents that were invalid (while debugging) according to my schema, but I didn't know it until I parsed the xml doc.

DWORD XML::writeToFile(xercesc::DOMDocument* document)
{
      DWORD status = ERROR_SUCCESS;

      if (document == NULL)
            return ERROR_INVALID_HANDLE;

XMLCh tempStr[100];
XMLString::transcode("LS", tempStr, 99);
DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
DOMWriter* theSerializer = ((DOMImplementationLS*)impl)->createDOMWriter();
XMLCh* utf16str = NULL;
const XMLByte* str = NULL;


// optionally you can set some features on this serializer
if (theSerializer->canSetFeature(XMLUni::fgDOMWRTDiscardDefaultContent, true))
theSerializer->setFeature(XMLUni::fgDOMWRTDiscardDefaultContent, true);


if (theSerializer->canSetFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true))
theSerializer->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true);
LocalFileFormatTarget myFileTarget( m_xmlFileName );


    try
    {
        theSerializer->writeNode( &myFileTarget, *document);

    }
    catch (const XMLException& toCatch)
    {
            status = ERROR_CANTWRITE;

    }
    catch (const DOMException& toCatch)
    {
            status = ERROR_CANTWRITE;
    }
    catch (...)
    {
            status = ERROR_CANTWRITE;
    }

    theSerializer->release();
      return status;
}

Vince.



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



Reply via email to