tinyxml使用样板
#include "tinyxml2.h" //创建一个XML void CreateXml() { //添加根元素root tinyxml2::XMLDocument* doc = new tinyxml2::XMLDocument(); tinyxml2::XMLElement* root = doc->NewElement( "root" ); doc->InsertFirstChild(root); //添加child元素element并设置属性 tinyxml2::XMLElement* element = doc->NewElement( "element" ); element->SetAttribute("key1", "abc"); element->SetAttribute("key2", "123"); element->SetAttribute("key3", "abc"); root->InsertFirstChild(element); element = doc->NewElement( "element" ); element->SetAttribute("key1", "efg"); element->SetAttribute("key2", "456"); element->SetAttribute("key3", "efg"); root->LinkEndChild(element); element = doc->NewElement( "element" ); element->SetAttribute("key1", "efg1"); element->SetAttribute("key2", "4567"); element->SetAttribute("key3", "efg1"); root->LinkEndChild(element); //添加child元素text并设置text element = doc->NewElement( "text" ); element->SetText("hello world"); root->LinkEndChild(element); doc->Print(); doc->SaveFile("test.xml"); delete doc; } void ReadXml() { tinyxml2::XMLDocument doc; doc.LoadFile("test.xml"); if (0 != doc.ErrorID()) { printf("[errorId=%d, file=%s]load xml file fail\n", doc.ErrorID(), "example.xml"); return; } tinyxml2::XMLElement* elementRoot = doc.FirstChildElement("root"); if (NULL == elementRoot) { printf("xml element elementRoot not exist\n"); return; } tinyxml2::XMLElement* element = elementRoot->FirstChildElement("element"); while( element != NULL) { const char* key1 = NULL; element->QueryStringAttribute("key1", &key1); printf("key1:%s ", key1); int key2 = 0; element->QueryIntAttribute("key2", &key2); printf("key2:%d ", key2); const char* key3 = 0; element->QueryStringAttribute("key3", &key3); printf("key3:%s\n", key3); element = element->NextSiblingElement(); } element = elementRoot->FirstChildElement("text"); const char* str = element->GetText(); printf("<text>%s</text>\n", str); } int main() { CreateXml(); ReadXml(); return 0; }