[英]Can't load and parse xml file on android in c++
我正在研究Cocos2dx C ++項目,我正在嘗試加載XML文件並使用rapidxml解析它。
Win32版本適用於此代碼。
rapidxml::file<> xmlFile("myxml.xml");
xml_document<> doc; // character type defaults to char
doc.parse<0>(xmlFile.data()); // 0 means default parse flags
xml_node<> *main = doc.first_node(); //Get the main node that contains everything
這不適用於Android版本。 這很可能是因為找不到“myxml.xml”。 所以我的解決方案是以不同的方式加載文件。
所以我試着用這個替換xmlFile.data()。 移動設備現在可以找到並讀取數據但我無法通過rapidxml解析它。
const unsigned char* xmldata = CCFileUtils::sharedFileUtils()->getFileData("myxml.xml", "r", &tmpSize);
但后來我不知道如何解析它。
這是獲取數據的另一種方法,但仍然不知道如何使用rapidxml進行解析。
std::string xmldata2 = CCFileUtils::sharedFileUtils()->getStringFromFile("myxml.xml");
任何想法如何在rapidxml中解析這個,或任何其他建議如何解決這個問題?
我是c ++的新手所以非常感謝任何幫助。
xml_document* doc = new xml_document;
unsigned char* pBuffer = NULL;
unsigned long bufferSize = 0;
std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(filename);
pBuffer = CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), "r", &bufferSize);
if(bufferSize == 0)
{
CCLog("file failed to open");
delete doc;
}
xml_parse_result results = doc->load_buffer(pBuffer, bufferSize);
CCLog("filename: %s | result: %s | status: %d",filename, results.description(), results.status);
if(pBuffer)
{
delete [] pBuffer;
pBuffer = NULL;
}
xml_node mainNode = doc->child("main");
然后mainNode具有已解析文件的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.