C++読み書きXMLファイル(tinyxmlライブラリを使用)


次のコードを使用する前に、TinyXmlライブラリをダウンロードし、プロジェクトの下に含める必要があります.
 
  
#include   
#include "tinyxml.h"  
#include   
#include   
using namespace std;

/*
TiXmlDocument:   ,      xml  
TiXmlDeclaration:   ,          
TiXmlComment:   ,          
TiXmlElement:   ,         ,        ,                ,            
TiXmlAttribute/TiXmlAttributeSet:    ,         ,            
TiXmlText:    ,          
*/
//  xml    
int writeXmlFile()
{
	TiXmlDocument *writeDoc = new TiXmlDocument; //xml      

	//        
	TiXmlDeclaration *decl = new TiXmlDeclaration("1.0", "UTF-8", "yes");
	writeDoc->LinkEndChild(decl); //      

	int n = 3;  //       

	TiXmlElement *RootElement = new TiXmlElement("Info");//     
	RootElement->SetAttribute("num", n); //    
	writeDoc->LinkEndChild(RootElement);

	for (int i = 0; iSetAttribute("class", "A");
		if (2 == i)
		{
			StuElement->SetAttribute("class", "B");
		}

		StuElement->SetAttribute("id", i + 1);
		StuElement->SetAttribute("flag", (i + 1) * 10);
		RootElement->LinkEndChild(StuElement);//         

		//    
		TiXmlElement *nameElement = new TiXmlElement("name");
		StuElement->LinkEndChild(nameElement);

		TiXmlText *nameContent = new TiXmlText("mike");
		nameElement->LinkEndChild(nameContent);

		//    
		TiXmlElement *scoreElement = new TiXmlElement("score");
		StuElement->LinkEndChild(scoreElement);

		TiXmlText *scoreContent = new TiXmlText("88");
		scoreElement->LinkEndChild(scoreContent);

		//    
		TiXmlElement *cityElement = new TiXmlElement("city");
		StuElement->LinkEndChild(cityElement);

		TiXmlText *cityContent = new TiXmlText("Shenzhen");
		cityElement->LinkEndChild(cityContent);

	}

	writeDoc->SaveFile("stu_info.xml");
	delete writeDoc;

	return 1;
}

//  xml    
int readXmlFile()
{
	char *path = "C:\\\\Release\\\\config\\\\configAck.xml";
	TiXmlDocument mydoc(path);//xml      
	bool loadOk = mydoc.LoadFile();//      
	if (!loadOk)
	{
		cout << "could not load the test file.Error:" << mydoc.ErrorDesc() << endl;
		exit(1);
	}

	TiXmlElement *RootElement = mydoc.RootElement();  //   , Info  
	cout << "[root name]" << RootElement->Value() << "
"; TiXmlElement *pEle = RootElement; // for (TiXmlElement *StuElement = pEle->FirstChildElement();// StuElement != NULL; StuElement = StuElement->NextSiblingElement())// { // StuElement->Value() cout << StuElement->Value() << " "; TiXmlAttribute *pAttr = StuElement->FirstAttribute();// while (NULL != pAttr) // { cout << pAttr->Name() << ":" << pAttr->Value() << " "; pAttr = pAttr->Next(); } cout << endl; // for (TiXmlElement *sonElement = StuElement->FirstChildElement(); sonElement; sonElement = sonElement->NextSiblingElement()) { cout << sonElement->FirstChild()->Value() << endl; } } return 1; } int main(int argc, char *argv[]) { writeXmlFile(); printf("
after write
"); readXmlFile(); return 0; }