用SAXXMLReader将XML文件保存为缩进格式,方便阅读

MSXML3.0以上才提供对SAXXMLReader,直接上代码:

void SaveToXmlFile( MSXML2::IXMLDOMDocumentPtr docPtr,const wchar_t* XmlFileName )
{

	HRESULT hr = S_OK;	
	MSXML2::IMXWriterPtr pWriter(__uuidof(MSXML2::MXXMLWriter));	
	MSXML2::ISAXXMLReaderPtr pReader(__uuidof(MSXML2::SAXXMLReader));	

	pReader->putContentHandler((MSXML2::ISAXContentHandlerPtr)pWriter);	
	pReader->putDTDHandler((MSXML2::ISAXDTDHandlerPtr)pWriter);	
	pReader->putErrorHandler((MSXML2::ISAXErrorHandlerPtr)pWriter);	
	pWriter->put_indent(VARIANT_TRUE);	
	pWriter->put_byteOrderMark(VARIANT_TRUE);
	pWriter->put_standalone( VARIANT_TRUE );
	pWriter->put_disableOutputEscaping( VARIANT_TRUE );

	IStream* pStream = NULL;	
	DWORD grfMode = STGM_WRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE;	
	hr = SHCreateStreamOnFileW(XmlFileName, grfMode, &pStream);	
	if (SUCCEEDED(hr))	
	{		
		_variant_t  v = pStream;
		hr = pWriter->put_output(v);	
		if (SUCCEEDED(hr))			
		{
			hr = pReader->parse((_variant_t)docPtr.GetInterfacePtr());
			if (SUCCEEDED(hr))	
				pWriter->flush();
		}
		pStream->Release();
	}	
}

参考文章:http://www.cppblog.com/fwxjj/archive/2008/02/02/42411.html


PS:代码不是本人所写,一个前辈的,借用一下,贡献出来,希望对别的童鞋有帮助。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值