簡體   English   中英

無法在c ++中加載和解析android上的xml文件

[英]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 ++的新手所以非常感謝任何幫助。

我使用過PugiXML ,使用起來相對簡單。 文件讀作:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM