Bool CXmlFile::ParseFile(const AString& sFile, PVoid pDoc) { CDiskFile xFile; if (!pDoc || !xFile.Open(sFile)) return false; Size_t iSize = (Size_t)(xFile.GetFileSize() + 8); Char* pData = (Char*)UtilMalloc(iSize); CScope::CMallocPtr scope(pData); memset(pData, 0, iSize); iSize = (Size_t)xFile.Read(pData, xFile.GetFileSize()); xFile.Close(); //解析文档 return ParseDocument(pDoc, pData); }
Bool CMemoryFile::Open(const AString& sFile) { Close(); m_eOpenType = OPEN_READ; m_bExtra = false; CDiskFile df; if (df.Open(sFile)) { m_iFileSize = df.GetFileSize(); m_pData = (Char*)malloc((Size_t)m_iFileSize); memset(m_pData, 0, (Size_t)m_iFileSize); df.Read(m_pData, m_iFileSize); return true; } return false; }