天天看點

TinyXml使用總結

最近由于接了一個核外面對通的項目,需要進行Xml檔案的讀寫。之前都沒有接觸過這些,臨時被趕鴨子上架。在網上搜了一些,TinyXml的使用率比較高。因為TinyXml的開源的,用起來比較友善,同時如果出現問題,定位起來也相對簡單。

因為是初次接觸,沒有什麼方法,無非就是搜搜教程,在網上參考各位大神的經驗。終于現在有些點心得,記錄下來。同時把遇到的疑惑也寫下來。

建議初次接觸TinyXml的同學,先大緻的了解一下Xml檔案的結構。

TinyXml的類的組織特别合理。除了基類外,每一個類代表Xml檔案的一個元素。

TiXmlDocument      表征Xml檔案的類,也是進行讀寫Xml檔案的入口

TiXmlDecleration    Xml檔案的第一行,也就是Xml檔案的聲明

TiXmlElement         Xml檔案中的元素。包括TiXmlNode(節點,即包含在尖括号裡面的内容)和TiXmlAttribute(屬性)

TiXmlText                Xml檔案節點的文本内容。也可以了解為其就是節點的一部分

TiXmlComment    Xml檔案中的注釋

TiXmlAttribute       Xml檔案中節點的屬性

TiXmlBase            上面這些類的父類

使用TinyXml,首先搭建環境。兩種方式,可以直接把cpp和h檔案一起放到工程裡面來。還有一種方式就是編一個庫。不過在編譯的時候會報錯。找到報錯的位置。注掉即可。

用第二種方式我遇到了問題,就是在一個工程中使用正常,但是把這個庫放到另外一個工程裡面,運作的時候程式會崩潰。在網上搜了很久,類似的問題貌似沒有人提及過。可能大家很多都用的第一種方式。是以此處的問題我也暫時挂起沒有處理。

Xml檔案的建立很簡單,隻要調用兩個函數即可。LinkEndChild和SetAttribute。不過此處對于我這樣的菜鳥,犯了很大一個錯誤。每次new一個元素以後,插入結束後會習慣性的delete掉。這樣看似沒有錯,但是其實大錯特錯。Xml檔案時樹形的結構。我們可以選取其中一個分支将其了解為連結清單,向連結清單裡面插入一個節點,肯定是不能夠删除的,可惜直到出錯了我才有這種體會。當然我們也可以去源碼裡面看看,因為是類與類之前是繼承關系,還有包含關系,是以我們隻要在建立Xml檔案結束時delete掉TiXmlDocument就行了。

當然通過這幾天的學習,心裡也有些一些疑惑,就是我們能不能通過TinyXml來封裝一個自己的類,可以實作任何結構的Xml檔案的讀寫。我思考的結果是不可以,除非我們可以保證裡面的每一個節點都是不同的名字。否則不可以。不知道有沒有哪位大神有過類似的思考,也希望您能夠指點我一二。提前謝謝了。