tinyxml庫使用實例

讀取和設置xml配置文件是最常用的操作,TinyXML是一個開源的解析XML的C++解析庫,能夠在Windows或Linux中編譯。這個解析庫的模型通過解析XML文件,然後在內存中生成DOM模型,從而讓我們很方便的遍歷這棵XML樹。

TinyXM下載地址

使用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爲例進行數據讀取:

<Students>
    <Student Name="James" Age = "10">
        <Class>1</Class>
        <Grade>2</Grade>
    </Student>
	<Student Name="Jane" Age = "11">
        <Class>2</Class>
        <Grade>3</Grade>
    </Student>
</Students>

讀取代碼:

#include <iostream>
#include "tinyxml.h"

#define CheckNullReturnMinusOne(t) if (nullptr == t) { return -1; }

int main()
{
	const char* path = "Students.xml";
	TiXmlDocument doc(path);

	if (!doc.LoadFile())
	{
		std::cout << "Load File Failed" << std::endl;
		return -1;
	}

	TiXmlElement* pRoot = doc.RootElement(); CheckNullReturnMinusOne(pRoot);
	for (TiXmlElement* pStudent = pRoot->FirstChildElement(); pStudent != nullptr; pStudent = pStudent->NextSiblingElement())
	{
		std::cout << "---------------------------------\n";

		// 遍歷獲取Student節點的所有屬性
		for (TiXmlAttribute* pAttribute = pStudent->FirstAttribute(); pAttribute != nullptr; pAttribute = pAttribute->Next())
		{
			std::cout << pAttribute->Name() << " : " << pAttribute->Value() << std::endl;
		}

		// 獲取Student節點的子節點
		for (TiXmlElement* pData = pStudent->FirstChildElement(); pData != nullptr; pData = pData->NextSiblingElement())
		{
			std::cout << pData->Value() << " : " << pData->GetText() << std::endl;
		}

		std::cout << "----------------------------------\n";
	}
		
	return 0;
}

程序運行輸出爲:

---------------------------------
Name : James
Age : 10
Class : 1
Grade : 2
----------------------------------
---------------------------------
Name : Jane
Age : 11
Class : 2
Grade : 3
----------------------------------
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章