tinyxml2實際運用的一類場景

2021-08-01 09:00:22 字數 2578 閱讀 6072

在某些情況下我們介面無法滿足或者很難滿足我們的一些需求,特別是有時候跨語言性的互動對複雜物件的傳遞

我們在玩手機遊戲的時候,有時候在新手指導裡面我們經常看到這樣乙個句子

小夥伴們經過裝備強化可以變得更加厲害喲

當需要突出高亮 「裝備強化」四個字   而且這種突出性的文字你不知道是具體哪一段或者一句話中有多少這樣的高亮文字

比如:   攻打試練塔可以更多的得到水晶,來購買紫色防具

這種場景問題或者類似的問題我們都可以用以下方法解決

tinyxml2給我們提供了乙個**的類tinyxml2::xmlvisitor

我們可以把它繼承下來按照我們自己想要的實現

這個機制有點像cocos2dx 裡面的tableview的實現方式一樣

我們把需求語句寫成xml格式字串,這樣做的好處的我們只需要乙個字串介面就可以了

我們寫乙個xml

<?xml version=\"1.0\" encoding=\"utf-8\"?>你非常

美麗

然後我們可以先定乙個物件來表示裡面的標籤

struct textinfo;

void clear() ;

std::string strtext; //文字段落的內容

color3b color; //文字段落的顏色

};

繼承自tinyxml2::xmlvisitor的類

class myvisitor : public tinyxml2::xmlvisitor

; inline std::vector& getinfovec() ;

public:

/// visit a document.

virtual bool visitenter(const tinyxml2::xmldocument& doc)

/// visit a document.

virtual bool visitexit(const tinyxml2::xmldocument& doc)

/// visit an element.

virtual bool visitenter(const tinyxml2::xmlelement& element, const tinyxml2::xmlattribute* firstattribute)

color3b color;

const tinyxml2::xmlattribute* attr = firstattribute;

while (attr)

break;

}attr = attr->next();

} m_textinfo.color = color;

return true;

} /// visit an element.

virtual bool visitexit(const tinyxml2::xmlelement& element)

/// visit a declaration.

virtual bool visit(const tinyxml2::xmldeclaration& declaration)

/// visit a text node.

virtual bool visit(const tinyxml2::xmltext& text)

/// visit a comment node.

virtual bool visit(const tinyxml2::xmlcomment& comment)

/// visit an unknown node.

virtual bool visit(const tinyxml2::xmlunknown& unknown)

private:

color3b m_color; //文字段落的顏色

std::vectorm_vectextinfo; //我們自己定義的物件的陣列

textinfo m_textinfo;

};

接下來我麼就可以實際的運用了

tinyxml2::xmldocument docz;

tinyxml2::xmlerror err;

myvisitor visitor;

file* fp = fopen("test3.xml", "r");

/*<?xml version=\"1.0\" encoding=\"utf-8\"?>

你非常美麗

*/ int size = 0;

unsigned char * buffer = nullptr;

if (!fp)

dowhile (0);

err = docz.parse((const char *)buffer);

if (err == tinyxml2::xml_success) }

free(buffer);

}

這樣我們就很輕鬆的把乙個複雜的問題簡單(當然可定還有更好的方法  =  =)

轉換稱自己想要的物件

cocos中使用tinyxml2遇到的乙個小問題

在使用cocos2d x 的過程中 使用到了tinyxml2 然後卻遇到了 定義xmldocument或者xmlelement 等tinyxml2中類報 不允許使用不完整的的型別 或者 xmldocument不明確的錯誤 這種問題一般是沒有正確的include 類導致的,可以看到 這裡我incude...

用TinyXml2讀取XML檔案的乙個簡單Demo

廢話少說直接上 需要的人自然一看便懂,對於第一次接觸tinyxml2的人來說還是有幫助的.181.7 281.6 30 1.8tinyxml2 xmldocument doc doc.loadfile test.xml tinyxml2 xmlelement proot doc.rootelemen...

TinyXML2的呼叫和遇到問題處理

本人已經將 和筆記上傳到個人gitee倉庫 執行環境 vs 2017 tinyxml2是簡單實用的開源的c xml檔案解析庫,可以很方便的應用到現有的專案之中。自己對tinyth的讀寫操作進行了封裝xmlfile類。在新建的專案中載入tinyxml2.h tinyxml2.cpp xmlfile.h...