从内存中读XML文件,该如何处理

从内存中读XML文件

参考 http://w.xue163.com/html/200871/673243.html


CString spath,sxml; 
int ilen =0; 
spath ="BitComet.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(); 
sxml.Format("%s",pBufferRead); 
  sxml = sxml.Mid(3,ilen-3);
   

  CoInitialize(NULL) ;  
  xml::IXMLDOMDocumentPtr pDoc ; 
  xml::IXMLDOMElementPtr pElem ; 
  xml::IXMLDOMNodePtr pNode ; 
  xml::IXMLDOMNodeListPtr pNodeList ; 
  HRESULT hr = pDoc.CreateInstance(__uuidof(xml::DOMDocument)) ; //创建文档对象 
  if(!SUCCEEDED(hr)) 
  { 
  cout<<"无法创建DM对象!"<<endl ; 
  return 0 ; 
  } 
  VARIANT_BOOL bFlag; 
//IXMLDOMDocument::CreateProcessingInstruction(_T("xml"), _T("version=\"1.0\" encoding=\"utf-8\""));
  bFlag = pDoc->load(pBufferRead) ; //load xml文件 
  if(bFlag == S_FALSE) 
  { 
  cout<<"打开BitComet.xml出错!"<<endl ; 
  return 0 ; 
  } 
  hr = pDoc->get_documentElement(&pElem) ; //获取根结点 
  if(pElem == NULL) 
  { 
  cout<<"获取根结点失败!"<<endl ; 
  return 0 ; 
  } 

读取根结点失败了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  <?xml version="1.0" encoding="UTF-8" ?> 
<Licence_Service>
  <Version_1>
  <Version>1.0.0</Version> 
  </Version_1>
  <SeriesNo_1>
  <SeriesNo>TH123456</SeriesNo> 
  </SeriesNo_1>
  <BeginTime_1>
  <BeginTime>2010-03-16</BeginTime> 
  </BeginTime_1>
  <EndTime_1>
  <EndTime>2010-03-28</EndTime> 
  </EndTime_1>
  <Declare_1>
  <Declare>中国音乐集体管理组织与天合文化集团有限公司</Declare> 
  </Declare_1>
  <DeFind_1>
  <DeFind>中文申明</DeFind> 
  </DeFind_1>
  <OverTime_1>
  <OverTime>2010-03-25</OverTime> 
  </OverTime_1>
  <DontPlay_1>
  <DontPlay>Y</DontPlay> 
  </DontPlay_1>
</Licence_Service>




------解决方案--------------------
pDoc->CreateProcessingInstruction(_T("xml"), _T("version=\"1.0\" encoding=\"utf-8\""));
------解决方案--------------------
帮顶,学习了。。。。。。
------解决方案--------------------
请使用UNICODE串,不要使用char*
------解决方案--------------------
IXMLDOMDocument有两个方法,load和loadxml,load参数是文件名,loadxml参数是字符串缓冲区或是CString也行。