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]