参考网址:https://shilohjames.wordpress.com/2014/04/27/tinyxml2-tutorial/#XML-SaveXMLDocument
创建一xml文件 :
XMLDocument iXmlDoc;
iXmlDoc.SaveFile("test.xml");
XMLDocument类型的实体 类似于一个句柄,用它可以来生成,保存,读取xml文件。
对xml的任何更改最后一定要保存才可能生效,这一点一定要切记切记!
打开已有的xml文件:
XMLDocument *piXmlDoc =new XMLDocument();
int nReturnCode=piXmlDoc->LoadFile(strFileName.c_str());
如果加载成功,返回的ReturnCode为0;
向xml文件里插入一个Element,并增加属性:
XMLElement * pRoot=iXmlDoc.NewElement("Ewaybot");
iXmlDoc.InsertFirstChild(pRoot);
XMLElement * pElement = iXmlDoc.NewElement("parameter");
pElement->SetAttribute("Name",“456”);
pRoot->InsertEndChild(pElement);
iXmlDoc.SaveFile("test.xml");
先生成一个Element元素 pRoot, 调用InsertFirstChild方法完成插入根节点。
InsertEndChild把 pElement插入到根节点的最后,成为其最后一个元素。 pElement通过SetAttribute可以设定自己的属性。
最后还是要保存。
查找某个Element,及其中的属性:
先找到xml文件的根元素,没有根元素就是返回的就是每一个元素。XMLEleent* piXmlElemRoot=iXmlDoc .RootElement();
查找根元素下名为: parameter的元素,如果有的话就返回指向第一个句为 parameter元素的指针; 可以用下面这个方式去遍历根元素下的所有ElementXMLElement* piXmlElemParam=piXmlElemRoot->FirstChildElement("parameter");
piXmlElemParam=piXmlElemParam→NextSiblingElement();的作用为返回与 piXmlElemParam同级while(piXmlElemParam) { //do something... piXmlElemParam=piXmlElemParam->NextSiblingElement(); }
的下一个Element的指针;
const XMLAttribute*piXmlAttribute=piXmlElemParam->FirstAttribute();
piXmlAttribute为Element中属性的类。用这种方式可以获得 piXmlElemParam的第一个属性。 这里的返回一定是const类型的,否则编译不过,这是tinyxml2和tinyxml的一处区别所在。 如果这里的属性指针是const类型的那说明,不能通过属性本身去修改属性的值,只能通过包含属性的元素去修改属性,修改属性的方法下面会列出。
这个操作会获得 piXmlElemParam这个Element的下一上属性,这种方式跟之前Element之间的操作相似。piXmlAttribute=piXmlAttribute→Next();
这两种方法可以获得属性的名称和值。 删除某个Element:piXmlAttribute->Name(); piXmlAttribute→Value();
DeleteChild为删除一个Element。 修改Element的属性:XMLElement* piXmlElemRoot=iXmlDoc.RootElement(); XMLElement* piXmlElemParam=piXmlElemRoot→FirstChildElement("parameter"); piXmlElemRoot->DeleteChild(piXmlElemParam);
如果Element中有Name这条属性,上面的操作会将其值改成123!也就是说,SetAttribute,即可以增加新的属性,也可以XMLElement* piXmlElemRoot=((XMLDocument*)piXmlDoc)->RootElement(); XMLElement* piXmlElemParam=piXmlElemRoot→FirstChildElement("parameter"); piXmlElemParam->SetAttribute(“Name”,“123”);
修改已有的属性! 关闭xml文件:操作完成后一定要释放资源,方式如上,即释放句柄。delete iXmlDoc;
参考网址:https://shilohjames.wordpress.com/2014/04/27/tinyxml2-tutorial/#XML-SaveXMLDocument