91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

跨平臺解析xml的方法(tinyXML)

發布時間:2020-06-17 09:58:12 來源:網絡 閱讀:1022 作者:zswnet 欄目:開發技術

 在開發cocos2dx跨平臺網絡游戲的時候,數據基本都會處理成xml格式。

cocos2dx封裝了libxml,處理xml可以使用封裝好的類CCSAXParser,  

采用key - value ,key- value方式編輯的xml可以采用CCSAXParser。

我們編輯的xml大量使用到了key-value -Attribute ,就是數據基本都寫在了屬性里面,所以我采用了第三方庫tinyxml

下面是代碼實現:

  1. void HXmlParse::Read_questxml(const char * docname ,  char* buf_ ,GameBoard * gameBoardinstance){ 
  2.      
  3.     TiXmlDocument doc(docname); 
  4.     //bool loadOkay = doc.LoadFile(); 
  5.         if( strcmp( docname,"")!=0){ 
  6. //這個是從網絡下載的文件,緩存到本地,所以有判斷
  7.     char* pBytes = GOEUtilies::getFileDataFromWriteablePath(docname); 
  8. //  CCLog("getFileData:%s |pBytes:%d",docname,size); 
  9.     doc.Parse((const char *)pBytes,0,TIXML_ENCODING_UTF8); 
  10.         }else 
  11.         { 
  12.             doc.Parse((const char*)buf_,0,TIXML_ENCODING_UTF8); 
  13.         } 
  14.  
  15.  
  16. //  if ( !loadOkay ) 
  17. //  { 
  18. //      CCLOG( "Could not load test file '%s'. Error='%s'. Exiting.\n", docname,doc.ErrorDesc() ); 
  19. //      return; 
  20. //  } 
  21.      
  22.     TiXmlNode* noderoot = 0;           //the root node 
  23.     //TiXmlNode* nodearray = 0; 
  24.     TiXmlElement* todoElement = 0;   // the first node , like Accout,Crop ... 
  25.     TiXmlElement* itemElement = 0;   //  the Accout,Crop 's element list 
  26.      
  27.     noderoot = doc.RootElement()->FirstChild(); 
  28.      
  29.     gameBoardinstance->_goeStaticData->quests_ = new CCDictionary(); 
  30.      
  31.     for( todoElement = noderoot->FirstChildElement(); 
  32.         todoElement; 
  33.         todoElement = todoElement->NextSiblingElement()) 
  34.     { 
  35.         GOEStaticQuest * quest = new GOEStaticQuest(); 
  36.         quest->questId_ = atoi(todoElement->Attribute("id")); 
  37.         gameBoardinstance->_goeStaticData->questId_ = quest->questId_; 
  38.         quest->needIds_ = *(CCString::create(todoElement->Attribute("needid"))); 
  39.         quest->nextIds_ = *(CCString::create(todoElement->Attribute("nextid"))); 
  40.         quest->newId_ = atoi(todoElement->Attribute("newid")); 
  41.         quest->exp_ = atoi(todoElement->Attribute("exp")); 
  42.         quest->resource_ = atoi(todoElement->Attribute("recource")); 
  43.         quest->coin_ = atoi(todoElement->Attribute("coin")); 
  44.  
  45.         quest->card_ = *(CCString::create(todoElement->Attribute("card"))); 
  46.         quest->icon_ = *(CCString::create(todoElement->Attribute("icon"))); 
  47.         quest->power_ = atoi(todoElement->Attribute("power")); 
  48.  
  49.         gameBoardinstance->_goeStaticData->quests_->setObject((CCObject*)quest, quest->questId_); 
  50.          
  51.         for( itemElement = todoElement->FirstChildElement(); 
  52.             itemElement; 
  53.             itemElement = itemElement->NextSiblingElement() ) 
  54.         { 
  55.             GOEStaticTask * task = new GOEStaticTask(); 
  56.             task->taskId_ = atoi(itemElement->Attribute("id")); 
  57.             task->action_ = *(CCString::create(itemElement->Attribute("action"))); 
  58.             task->type_ = *(CCString::create(itemElement->Attribute("type"))); 
  59.             task->value_ = *(CCString::create(itemElement->Attribute("value"))); 
  60.             task->params_ = *(CCString::create(itemElement->Attribute("params"))); 
  61.              
  62.             GOEStaticQuest * q = (GOEStaticQuest*)gameBoardinstance->_goeStaticData->quests_->objectForKey(gameBoardinstance->_goeStaticData->questId_); 
  63.             q->tasks_.addObject((CCObject*)task); 
  64.         } 
  65.  
  66.     } 

 

可以對比xml,很容易理解代碼,主要就是節點,然后遍歷

  1. <?xml version='1.0' encoding='UTF-8' standalone='no'?> 
  2. <goe:database xmlns:goe='http://www.elex-tech.com/sns/platform/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'> 
  3. <quests> 
  4. <quest id="301" icon="quest2" newid="0" needid="202" nextid="401" exp="0" recource="0" coin="0" card="0" power="0"> 
  5. <task id="0" action="buildingHarvest" type="301" value="0" params="0"/> 
  6. </quest> 
  7. <quest id="302" icon="quest2" newid="0" needid="204" nextid="402" exp="0" recource="0" coin="0" card="0" power="0"> 
  8. <task id="0" action="buildingHarvest" type="401" value="0" params="0"/> 
  9. </quest> 
  10. </quests> 
  11. </goe:database> 


 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新和县| 宝山区| 林州市| 巴彦淖尔市| 游戏| 宣威市| 广南县| 娄烦县| 剑河县| 抚松县| 贵州省| 大名县| 桂林市| 腾冲县| 台南市| 积石山| 扎赉特旗| 凤凰县| 古丈县| 耒阳市| 简阳市| 潞西市| 鹤庆县| 兖州市| 西乡县| 昭平县| 新泰市| 邯郸市| 筠连县| 安徽省| 临漳县| 凤山县| 新竹县| 安仁县| 临洮县| 黑龙江省| 昭苏县| 金门县| 深泽县| 仙居县| 乐陵市|