|
MSXML の出力をインデントする |
|
BOOL SaveIndentXML( CString strPath, // 出力するフルパスファイル名 MSXML2::IXMLDOMDocumentPtr pDoc // 出力する MSXML ドキュメント ) { try { // 書式化出力インターフェースにてインデント処理してXML文書を保存する IStreamPtr stmFile; SHCreateStreamOnFile( strPath, STGM_READWRITE | STGM_SHARE_DENY_WRITE | STGM_CREATE, &stmFile ); MSXML2::IMXWriterPtr wrt; wrt.CreateInstance("MSXML2.MXXMLWriter"); wrt->put_version(L"1.0"); wrt->put_encoding(L"Shift_JIS"); wrt->put_indent(VARIANT_TRUE); wrt->put_output(_variant_t((IUnknown*)(IUnknownPtr)stmFile)); MSXML2::ISAXXMLReaderPtr rdr; rdr.CreateInstance("MSXML2.SAXXMLReader"); rdr->putContentHandler((MSXML2::ISAXContentHandlerPtr)wrt); rdr->parse(_variant_t((IUnknown*)(IUnknownPtr)pDoc)); } catch (_com_error& e) { CString strErr; strErr.Format(_T("Error: %08X\n説明: %s\n"), e.Error(), e.ErrorMessage()); MessageBox(strErr, "error", MB_ICONERROR); } return TRUE; } |