1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
MSXML2::IMXWriterPtr spWriter(__uuidof(MXXMLWriter40));
MSXML2::IXMLDOMDocumentPtr spDoc(__uuidof(DOMDocument40));
MSXML2::ISAXXMLReaderPtr spReader(__uuidof(SAXXMLReader40));
//Load the DOM document.
spDoc->put_async (VARIANT_FALSE);
spDoc->put_validateOnParse (VARIANT_FALSE);
spDoc->put_resolveExternals (VARIANT_FALSE);
VARIANT_BOOL vresult = FALSE;
spDoc->load (_variant_t("d:\\xmlwrote.xml"), &vresult);
spWriter->put_byteOrderMark(VARIANT_TRUE);
spWriter->put_indent(VARIANT_TRUE);
spWriter->put_omitXMLDeclaration(VARIANT_TRUE);
//Set the XML writer to the SAX content handler.
spReader->putContentHandler((MSXML2::ISAXContentHandlerPtr)spWriter);
spReader->putDTDHandler ((MSXML2::ISAXDTDHandlerPtr)spWriter);
spReader->putErrorHandler ((MSXML2::ISAXErrorHandlerPtr)spWriter);
spReader->putProperty(L"http://xml.org/sax/properties/lexical-handler", (_variant_t)spWriter.GetInterfacePtr ());
spReader->putProperty (L"http://xml.org/sax/properties/declaration-handler",(_variant_t)spWriter.GetInterfacePtr ());
spReader->parse((_variant_t)spDoc.GetInterfacePtr ());
VARIANT vvariantres;
HRESULT hr = spWriter->get_output(&vvariantres); |