讀取和設定xml配置檔案是最常用的操作,tinyxml
是乙個開源的解析xml的c++解析庫,能夠在windows或linux中編譯。這個解析庫的模型通過解析xml檔案,然後在記憶體中生成dom模型
,從而讓我們很方便的遍歷這棵xml樹。
使用tinyxml只需要將其中的6個檔案拷貝到專案中就可以直接使用了,這六個檔案是:tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp。
tinyxml包括如下類:
tixmldocument
:xml文件類,它一般用於指示乙個文件物件;
tixmldeclaration
:xml標識類,也就是xml檔案第一行中標註的相關資訊;
tixmlelement
:xml節點類,這個類用來表示乙個節點;
tixmltext
:xml節點類的文字資訊類,標註了xml節點類的文字資訊;
tixmlcomment
:xml的注釋資訊類,用來標識xml文件類的注釋資訊;
繼承關係如下:
以如下students.xml為例進行資料讀取:
"james" age =
"10"
>
1<
/class>
2<
/grade>
<
/student>
"jane" age =
"11"
>
2<
/class>
3<
/grade>
<
/student>
<
/students>
讀取**:
#include
#include
"tinyxml.h"
#define checknullreturnminusone(t) if (nullptr == t)
intmain()
tixmlelement* proot = doc.
rootelement()
;checknullreturnminusone
(proot)
;for
(tixmlelement* pstudent = proot-
>
firstchildelement()
; pstudent !=
nullptr
; pstudent = pstudent-
>
nextsiblingelement()
)// 獲取student節點的子節點
for(tixmlelement* pdata = pstudent-
>
firstchildelement()
; pdata !=
nullptr
; pdata = pdata-
>
nextsiblingelement()
) std::cout <<
"----------------------------------\n";}
return0;
}
程式執行輸出為:
--
----
----
----
----
----
----
-------
name : james
age :
10class :
1grade :2--
----
----
----
----
----
----
----
----
----
----
----
----
----
----
----
----
-name : jane
age :
11class :
2grade :3--
----
----
----
----
----
----
----
----
TinyXML使用感悟
這兩天有個c 的小開發專案需要儲存一些有結構的資料,於是想用tinyxml的庫來儲存到xml檔案中,但是研究半天下來,發現他的很多函式都是const定義的引數變數,只能將要寫的東西寫死在 中,這樣就根本沒有互動性,使用者也不能輕鬆更改xml的內容。很是苦惱。部分函式定義如下 tixmldocumen...
tinyxml非常好的例項
這個例子對於只想簡單使用xml的使用者來說,非常有學習價值。完整程式 相信具有基本c 知識的人可以明白的 xml檔案內容 xml version 1.0 encoding gb2312 standalone yes resumes num 2 resume name 裕作 gender 男 gend...
使用TinyXml庫解析XML檔案 QT 原始碼
qt5.9.1 msvc2015 using namespace std int main int argc,char argv 開啟xml檔案 tixmldocument doc if doc.loadfile xml 1.xml qdebug 載入xml檔案失敗 const char error...