天天看點

C++基礎--TinyXml 讀寫XML文檔

bool CreateXmlFile(const char *szFileName)
{
	//建立xml檔案,szFileName為檔案儲存的路徑,若建立成功傳回true,否則false
	try
	{
		//建立一個XML的文檔對象
		TiXmlDocument *myDocument=new TiXmlDocument();
		//建立一個Person 元素并連接配接
		TiXmlElement *RootElement=new TiXmlElement("Persons");
		myDocument->LinkEndChild(RootElement);
		//建立一個Person元素并連接配接
		TiXmlElement *PersonElement=new TiXmlElement("Person");
		RootElement->LinkEndChild(PersonElement);
		//設定Person 元素的屬性
		PersonElement->SetAttribute("ID","1");
		PersonElement->SetAttribute("Name","PersonName");
		//建立name元素、age元素并連接配接
		TiXmlElement *NameElement=new TiXmlElement("name");
		TiXmlElement *AgeElement=new TiXmlElement("age");
		PersonElement->LinkEndChild(NameElement);
		PersonElement->LinkEndChild(AgeElement);
		//設定name元素和age元素的内容并連接配接
		TiXmlText *NameContent=new TiXmlText("琳");
		TiXmlText *AgeContent=new TiXmlText("25");
		NameElement->LinkEndChild(NameContent);
		AgeElement->LinkEndChild(AgeContent);
		//儲存到檔案
		myDocument->SaveFile(szFileName);
	}
	catch( char* e)
	{
		return false;
	}
	return true;
}
           
bool ReadXmlFile(const char *szFileName)
{
    //讀取Xml檔案,并周遊
    try
    {
        //建立一個XML的文檔對象
        TiXmlDocument *myDocument=new TiXmlDocument(szFileName);
        myDocument->LoadFile();
        //獲得根元素,即Persons.
        TiXmlElement *RootElement=myDocument->RootElement();
        //輸出根元素名稱,即輸出Persons.
        //cout<<RootElement->Value()<<endl;
        //獲得第一個Person節點。
        TiXmlElement *FirstPerson=RootElement->FirstChildElement();
        
        //獲得第一個Person的name節點和age節點和ID屬性。
        TiXmlElement *NameElement=FirstPerson->FirstChildElement();
        TiXmlElement *AgeElement=NameElement->NextSiblingElement();
        TiXmlAttribute  *IDAttribute=FirstPerson->FirstAttribute();
        TiXmlAttribute *NameAttribute=IDAttribute->Next();
        cout<<FirstPerson->Value();
        //輸出第一個Person的name,age,id
        cout<<":"<<NameElement->FirstChild()->Value()<<",";
        //cout<<NameElement->FirstChild()->Value()<<endl;
        cout<<AgeElement->FirstChild()->Value()<<endl;
        //cout<<IDAttribute->Value()<<endl;
        
    }
    catch(char * e)
    {
        return false;
    }
    return true;
}      
int _tmain(int argc, _TCHAR* argv[])
{
    const char *fileName="D:\\TextInfo.xml";
    CreateXmlFile(fileName);
    ReadXmlFile(fileName);
}      

轉載于:https://www.cnblogs.com/kingdom_0/articles/2555274.html