C++読み書きXMLファイル(tinyxmlライブラリを使用)
3812 ワード
次のコードを使用する前に、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;
}