Tinyxml2 实现xml文件的增删改查

初识 tinyxml2 ,记录一下其常 用操作

参考网址: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());

如果加载成功,返回的ReturnCode0

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方法完成插入根节点。

InsertEndChildpElement插入到根节点的最后,成为其最后一个元素。 pElement通过SetAttribute可以设定自己的属性。

最后还是要保存。

查找某个Element,及其中的属性:

 
     
 
     

XMLEleent* piXmlElemRoot=iXmlDoc .RootElement();

先找到xml 文件的根元素,没有根元素就是返回的就是每一个元素。
 
     

XMLElement* piXmlElemParam=piXmlElemRoot->FirstChildElement("parameter");

查找根元素下名为: parameter 的元素,如果有的话就返回指向第一个句为 parameter 元素的指针; 可以用下面这个方式去遍历根元素下的所有Element
 
     

while(piXmlElemParam) { //do something... piXmlElemParam=piXmlElemParam->NextSiblingElement(); }

piXmlElemParam=piXmlElemParam→NextSiblingElement(); 的作用为返回与 piXmlElemParam 同级
Element
 
     
 
     

const XMLAttribute*piXmlAttribute=piXmlElemParam->FirstAttribute();

    piXmlAttribute为Element中属性的类。用这种方式可以获得 piXmlElemParam的第一个属性。
这里的返回一定是const类型的,否则编译不过,这是tinyxml2和tinyxml的一处区别所在。
如果这里的属性指针是const类型的那说明,不能通过属性本身去修改属性的值,只能通过包含属性的元素去修改属性,
修改属性的方法下面会列出。
 
     
 
     

piXmlAttribute=piXmlAttribute→Next();

这个操作会获得 piXmlElemParam 这个Element 的下一上属性,这种方式跟之前Element 之间的操作相似。
 
     

piXmlAttribute->Name() piXmlAttribute→Value()

这两种方法可以获得属性的名称和值。 删除某个 Element
 
     

XMLElement* piXmlElemRoot=iXmlDoc.RootElement(); XMLElement* piXmlElemParam=piXmlElemRoot→FirstChildElement("parameter"); piXmlElemRoot->DeleteChild(piXmlElemParam);

DeleteChild 为删除一个Element 修改 Element 的属性:
 
     

XMLElement* piXmlElemRoot=((XMLDocument*)piXmlDoc)->RootElement(); XMLElement* piXmlElemParam=piXmlElemRoot→FirstChildElement("parameter"); piXmlElemParam->SetAttribute(“Name”,“123”);

如果Element中有Name这条属性,上面的操作会将其值改成123!也就是说,SetAttribute,即可以增加新的属性,也可以
xml
 
     

delete iXmlDoc;

操作完成后一定要释放资源,方式如上,即释放句柄。
 
    

你可能感兴趣的:(关于程序员)