文件组成:
2个头文件:
- tinystr.h
- tinyxml.h
4个源文件:
- tinystr.cpp
- tinyxml.cpp
- tinyxmlerror.cpp
- tinyxmlparser.cpp
下载地址
https://sourceforge.net/projects/tinyxml/
vs编译:
“项目” >> “属性” >> “C/C++” >> “预处理器” >> “预处理器定义”中添加宏定义“_CRT_SECURE_NO_WARNINGS”,该宏定义可解除vs编译时的不安全函数(如strcat(), strcpy()等)报警。
创建xml文件
bool CreateXml()
{
TiXmlDocument doc;
TiXmlDeclaration* pDeclaration = new TiXmlDeclaration("1.0", "UTF-8", ""); //文件头
doc.LinkEndChild(pDeclaration);
TiXmlElement* pBooks = new TiXmlElement("Books"); //根节点
doc.LinkEndChild(pBooks);
for (int i = 0; i < 3; i++) {
TiXmlElement* pBook = new TiXmlElement("Book");
pBook->SetAttribute("Number", i);
pBooks->LinkEndChild(pBook);
std::string strName = std::string("book") + std::to_string(i);
TiXmlElement* pName = new TiXmlElement("Name");
TiXmlText* pNameText = new TiXmlText(strName.c_str());
pName->LinkEndChild(pNameText);
pBook->LinkEndChild(pName);
std::string strAuthor = std::string("Author") + std::to_string(i);
TiXmlElement* pAuthor = new TiXmlElement("Author");
TiXmlText* pAuthorText = new TiXmlText(strAuthor.c_str());
pAuthor->LinkEndChild(pAuthorText);
pBook->LinkEndChild(pAuthor);
}
return doc.SaveFile("./book.xml");
}
读取xml文件
void ReadXml()
{
TiXmlDocument doc;
doc.LoadFile("./book.xml");
TiXmlDeclaration *pDeclaration = doc.FirstChild()->ToDeclaration();
std::cout << "Version: " << pDeclaration->Version() << std::endl;
std::cout << "Encoding: " << pDeclaration->Encoding() << std::endl << std::endl;
TiXmlElement* pBooks = doc.FirstChildElement("Books");
for (TiXmlElement* pBook = pBooks->FirstChildElement("Book"); pBook; pBook = pBook->NextSiblingElement("Book"))
{
std::cout << "Number: " << pBook->Attribute("Number") << std::endl;
TiXmlElement* pName = pBook->FirstChildElement();
//TiXmlElement* pName = pBook->FirstChildElement("Name");
std::cout << "Name: " << pName->GetText() << std::endl;
TiXmlElement* pAuthor = pName->NextSiblingElement();
std::cout << "Author: " << pAuthor->GetText() << std::endl << std::endl;
}
}