BOOL SApplication::_LoadXmlDocment( LPCTSTR pszXmlName ,LPCTSTR pszType ,pugi::xml_document & xmlDoc,IResProvider *pResProvider/* = NULL*/) { if(!pResProvider) { if(IsFileType(pszType)) { pugi::xml_parse_result result= xmlDoc.load_file(pszXmlName,pugi::parse_default,pugi::encoding_utf8); SASSERT_FMTW(result,L"parse xml error! xmlName=%s,desc=%s,offset=%d",pszXmlName,result.description(),result.offset); return result; }else { pResProvider = GetMatchResProvider(pszType,pszXmlName); } } if(!pResProvider) return FALSE; DWORD dwSize=pResProvider->GetRawBufferSize(pszType,pszXmlName); if(dwSize==0) return FALSE; CMyBuffer<char> strXml; strXml.Allocate(dwSize); pResProvider->GetRawBuffer(pszType,pszXmlName,strXml,dwSize); pugi::xml_parse_result result= xmlDoc.load_buffer(strXml,strXml.size(),pugi::parse_default,pugi::encoding_utf8); SASSERT_FMTW(result,L"parse xml error! xmlName=%s,desc=%s,offset=%d",pszXmlName,result.description(),result.offset); return result; }
void parse_buffer(pugi::xml_document& doc, const char *xmlbuf, size_t buflen) { pugi::xml_parse_result result = doc.load_buffer(xmlbuf, buflen); if (result.status != pugi::status_ok) { std::string errmsg = xml_error_string(result); throw ContentError(errmsg); } }
BOOL SApplication::_LoadXmlDocment( LPCTSTR pszXmlName ,LPCTSTR pszType ,pugi::xml_document & xmlDoc) { DWORD dwSize=GetRawBufferSize(pszType,pszXmlName); if(dwSize==0) return FALSE; CMyBuffer<char> strXml; strXml.Allocate(dwSize); GetRawBuffer(pszType,pszXmlName,strXml,dwSize); pugi::xml_parse_result result= xmlDoc.load_buffer(strXml,strXml.size(),pugi::parse_default,pugi::encoding_utf8); SASSERT_FMTW(result,L"parse xml error! xmlName=%s,desc=%s,offset=%d",pszXmlName,result.description(),result.offset); return result; }
// --------------------------------------------- pugi::xml_node j1App::LoadConfig(pugi::xml_document& config_file) const { pugi::xml_node ret; char* buf; int size = App->fs->Load("config.xml", &buf); pugi::xml_parse_result result = config_file.load_buffer(buf, size); RELEASE(buf); if(result == NULL) LOG("Could not load map xml file config.xml. pugi error: %s", result.description()); else ret = config_file.child("config"); return ret; }