Tinyxml2 实现xml文件的增删改查

来源:互联网 发布:数据库原理经典书籍 编辑:程序博客网 时间:2024/06/06 07:25
初识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;

操作完成后一定要释放资源,方式如上,即释放句柄。
参考网址:https://shilohjames.wordpress.com/2014/04/27/tinyxml2-tutorial/#XML-SaveXMLDocument
line-height: 120% };
原创粉丝点击