请问如何把图像文件保存到XML文件中
我是用XML来保存产品结构的,产品对应一个总图,各个部件对应部件图,我想能不能不用数据库,直接把图像文件作为二进制形式保存在XML文件中?
我是用VC+MSXML4来开发的
是这样的,比如对于一个部件,我是想把部件图作为一个属性:
<?xml version="1.0" encoding="GB2312"?>
<坦克 type="Product"><车体 type="Part" image="췗髆"><J0001 type="Weld"/></车体></坦克>
但现在显然是有问题的,代码如下:
void CFolderListView::AdoReadFile(LPCTSTR filename, _variant_t &vReadTo)
{
try
{
_variant_t varOptional(DISP_E_PARAMNOTFOUND,VT_ERROR);
_StreamPtr adostream;
adostream.CreateInstance(_T("ADODB.Stream"));
adostream->Type = adTypeBinary;
adostream->Open(varOptional,adModeUnknown, adOpenStreamUnspecified, _T(""), _T(""));
adostream->LoadFromFile(_bstr_t(filename));//bstrFileName);
vReadTo = adostream->Read(adReadAll);
adostream->Close();
}
catch (_com_error &e)
{
AfxMessageBox(e.ErrorMessage());
}
}
IXMLDOMNode *pNode = NULL;
if ( !SUCCEEDED(m_pDoc->QueryInterface(__uuidof(IXMLDOMNode),
reinterpret_cast<void**>(&pNode))))
return;
// 首先定位到当前选择的节点,即欲增加子节点的节点
pNode->selectSingleNode(strPath.AllocSysString(), &pNode); // 用XPATH语句定位
IXMLDOMElement* pElement = NULL;
pNode->QueryInterface(__uuidof(IXMLDOMElement), (void**)&pElement);
_variant_t vAttrValue;
AdoReadFile(strWMFPath, vAttrValue);
if (pElement->setAttribute(_bstr_t("image"), vAttrValue) == E_FAIL)
{
AfxMessageBox("Fail");
}
CComVariant vFile(m_strXMLFileName);
m_pDoc->save(vFile); // 保存修改后的XML文件
请大虾们帮我看看什么原因,谢谢了!
分不够再加!