XML如何存储二进制数据?来者有分啊
上次问过一个问题,如何存储在XML中如何存储文件,但是由于我对这方面实在是不熟,怎么也不明白,如何把已经读入内存的一部分二进制字节流存入XML文件中,下面是上次网友给的回答(存文件的),请大家指点,见笑了,呵呵
//-----------------------------------------------------------------------------
// 功能: 用ADO读取二进制文件,以便保存到xml文件中
// 输入: filename - 欲读取的文件名
// 输出: vReadTo - 保存结果
// 日期: 2004.07.20
//作者:CSDN网友 hellolwl(刘文澜)
//-----------------------------------------------------------------------------
void CFolderListView::AdoReadFile(LPCTSTR filename, _variant_t &vReadTo)
{
try
{
_variant_t varOptional(DISP_E_PARAMNOTFOUND,VT_ERROR);
_StreamPtr adostream;
HRESULT hr = adostream.CreateInstance(_T("ADODB.Stream"));
if (!SUCCEEDED(hr))
{
MessageBox("创建CStream对象失败!");
return;
}
adostream->Type = adTypeBinary;
adostream->Open(varOptional,adModeUnknown, adOpenStreamUnspecified, _T(""), _T(""));
adostream->LoadFromFile(_bstr_t(filename));
vReadTo = adostream->Read(adReadAll);
adostream->Close();
}
catch (_com_error &e)
{
AfxMessageBox(e.ErrorMessage());
}
}
_variant_t vAttrValue;
AdoReadFile(strWMFPath, vAttrValue);
pNode->put_dataType(_bstr_t("bin.base64")); //pNode是IXMLDOMNode*类型
pNode->put_nodeTypedValue(vAttrValue);
注意在stdafx.h中加:
#import "c:\Program Files\common files\system\ADO\msado15.dll" rename_namespace("ado25") rename("EOF","adoEOF")
using namespace ado25;