2012-06-20 59 views
1

這是我一直想:Cocos2d-x使用pugixml解析來自URL內容的XML,我該怎麼做?

pugi::xml_document doc; 

pugi::xml_parse_result result = doc.load_file("Book.xml"); // need to change this 

std::cout << "Load result: " << result.description() << ", mesh name: " << doc.child("mesh").attribute("name").value() << std::endl; 

我想要做這樣的事情:

URL url; 
url = new URL("http://....."); 
URLConnection ucon = url.openConnection(); 
ucon.connect(); 
pugi::xml_parse_result result = doc.load_file(url.openStream()); // need to change this 

編輯1:

顯然,這是不可能的。 http://code.google.com/p/pugixml/issues/detail?id=116

那麼我應該如何前進?

回答

1

我用捲曲庫來從URL獲取內容,並將其保存爲一個字符串,像這樣:

CURL *curl; 
CURLcode res; 
std::string readBuffer; 

curl = curl_easy_init(); 
if(curl) { 
    curl_easy_setopt(curl, CURLOPT_URL, "http:..."); 
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); 
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer); 
    res = curl_easy_perform(curl); 
    curl_easy_cleanup(curl); 
} 

然後我解析包含在字符串中的數據:

pugi::xml_document doc; 
pugi::xml_parse_result result = doc.load(readBuffer.c_str()); 

易peasy :-)