读XML文件到内存操作的问题。请问如何读XML文件到内存操作加载成功
我想把XML文件读到一个内存中操作,pXMLDoc->loadXML(pBufferRead)
可是总不成功。
if(! pXMLDoc->load("F:\\jsp1\\rau\\src\\init\\initxiyu.xml")) 这样加载是成功的
请问如何读XML文件到内存操作加载成功
CString spath ;
int ilen =0;
spath ="F:\\jsp1\\rau\\src\\init\\initxiyu.xml";
CFile fFileRead(spath,CFile::modeReadWrite | CFile::modeNoTruncate );
ilen = fFileRead.GetLength();
char *pBufferRead = new char[ilen ];
ZeroMemory(pBufferRead,ilen);
memset(pBufferRead,'0',ilen);
fFileRead.Read(pBufferRead,ilen );
fFileRead.Close();MSXML2::IXMLDOMDocumentPtr pXMLDoc;
::CoInitialize(NULL);
HRESULT hr;
hr =pXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
//加载文件
//if(! pXMLDoc->load("F:\\jsp1\\rau\\src\\init\\initxiyu.xml")) //这样成功
if(! pXMLDoc->loadXML(pBufferRead)) //不成功
{
AfxMessageBox("加载文件不成功"); }
AfxMessageBox("成功");
delete [] pBufferRead ;
IXMLDOMDocument::CreateProcessingInstruction(_T("xml"), _T("version=\"1.0\" encoding=\"utf-8\""));
然后,再执行:
IXMLDOMDocument::LoadXML(pBufferRead)注意, pBufferRead要转换成BSTR类型, 用CString::AllocSysString比较方便,For more information about OLE allocation functions in Windows, see::SysAllocString and::SysFreeString in the Win32 SDK OLE Programmer’s Reference.
CString sxml;
//sxml= pBufferRead ;
//sxml = sxml.Left(ilen) ;
//if(! pXMLDoc->loadXML(sxml.AllocSysString()))//不成功
//if(! pXMLDoc->loadXML(pBufferRead))//不成功
//BSTR b=_com_util::ConvertStringToBSTR(pBufferRead);
//if(! pXMLDoc->loadXML(b))if(! pXMLDoc->load("F:\\jsp1\\rau\\src\\init\\initxiyu.xml")) //这样成功 不用这样的方法
{
AfxMessageBox("加载文件不成功"); }
AfxMessageBox("成功");
delete [] pBufferRead ;可我想把读XML文件到内存操作加载成功
下面是改了几次的XML文件都是不成功的加载到内存。
//不成功<?xml version="1.0" ?>
<application>
<menu>
<title>系统维护</title>
</menu>
</application>
//不成功<?xml version="1.0" encoding="unicode" ?>
<application>
<menu>
<title>系统维护</title>
</menu>
</application>
sxml = sxml.Mid(3,ilen-3);
这样就好了不知为什么有3个没用的字符?