數據解析

數據解析

在網路通信過程中需要傳輸數據,常用的數據格式有兩種:JSON、XML。Cocos2d-x對JSON和XML這兩種數據格式的解析提供了支持,主要為:JOSN數據解析、XML數據解析。JOSN數據解析的過程為:首先創建JSON檔案,然後在類中包含document.h和cocos-ext.h頭檔案,接著通過FileUtils獲得JSON檔案路徑,並通過Document對象解析JSON數據,最終獲得不同類型的數據值。XML數據解析的過程為:首先創建XML檔案,接著在類中包含頭檔案並使用命名檔案,然後獲得XML檔案全路徑,並載入XML檔案,最後獲得元素並解析。

基本情況

Cocos2d-x可以開發遊戲,它提供了多種網路連線方式,即時通信Socket、WebSocket、基於http的HttpCline、curl等等。在網路通信過程中,需要傳輸數據,常用的數據格式有兩種,一種是JSON,另外一種是XML,Cocos2d-x對這些數據格式的解析提供了支持,主要為:JOSN數據解析、XML數據解析。

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。它使得人們可以很容易地進行閱讀和編寫,同時也方便了機器進行解析和生成。JSON採用完全獨立於程式語言的文本格式,但是也使用了類C語言的習慣(包括C、C++、C#、Java、JavaScript、Perl和Python等),這些特性使得JSON成為理想的數據交換語言。

TinyXML是一個開源的解析XML的解析庫,Cocos2d-x集成了該庫,在Cocos2d-x項目的根目錄的extemal/tinyxml2目錄下面有該類的實現。TinyXML解析庫通過解析XML檔案,在記憶體中生成DOM模型,從而使我們可以很方便地遍歷這棵XML樹。

JSON數據解析

在Cocos2d.x根目錄的external/json目錄下面,是JSON處理的相關類,這裡主要使用document.h這個頭檔案,該檔案中的兩個核心類是GenericValue和GenericDocument,GenericDocument繼承GeneficValue。使用GenericDocument用來處理文檔內容,如解析文檔內容;而GenericValue主要處理值內容,即文檔內部的key-value鍵值對內容,可以根據key獲得value。GenericValue和GenericDocument都被重新進行了類型定義。所以可以使用類型定義後的名稱。

typedef GenericDocument<UTF8<>>Document;

typedef GenericValue<UFT8<>>Value;

Value重載了數組下標操作符[],所以我們可以使用該操作符,根據JSON檔案中的key獲得value。

const GenericValue & operator [] (const Ch* name) const{

const_cast<GenericValue&>(*this)[name];}

Value還提供了一組GetXXX方法,根據不同的數據類型,獲得相應的值。

通過一個實例來演示如何解析JSON數據,操作步驟如下:

創建JSON檔案

在項目的classes資料夾下創建一個JSON檔案,內容如下:

在該檔案中,pets是一個數組,表示寵物,有兩個值dog和pet;stuInfo是一個學生信息;後面是一個usename;最後還有一個other數組。

在類中包含document.h和cocos-ext.h頭檔案

通過FileUtils獲得JSON檔案路徑

通過Document對象解析JOSN數據

獲得不同類型的數據值

通過數組下標操作符[],根據key獲得Value,並使用Value的GetXXX方法獲得不同類型的數據值。

XML數據解析

在TinyXML中,根據XML的各種元素定義了一些類。

(1)class XMLDocument:文檔;

(2)class XMLElement:元素;

(3)class XMLAttribute:屬性;

(4)class XMLComment:注釋;

(5)class XMLNode:節點;

(6)class XMLText:文本;

(7)class XMLDeclaration:聲明;

(8)class XMLUnknown:未知部分。

一個解析XML檔案的實例的具體操作步驟如下:

創建XML檔案

在項目的Classes目錄下面創建一個XML檔案,檔案內容如下;

上述檔案中有三個學生信息,每一個學生信息中又有學號(stu_num)、姓名(stu_name)、班級(stu_class)三個元素。

在類中包含頭檔案並使用命名空間

獲得XML檔案全路徑

創建檔案檔,並載入XML檔案

獲得元素並解析

獲得XML檔案的根元素及其子元素和兄弟元素,並進行解析,具體如下:

相關詞條

熱門詞條

聯絡我們