资源简介

资源包含2015.9.23从官网下载的tinyxml2的源码和自己编写的示例代码还有介绍文档,容易上手。官网的示例代码和文档晦涩难懂,才自己整理。

资源截图

代码片段和文件信息

#include 
#include 
using namespace std;

#include “tinyxml2.h“
using namespace tinyxml2;

//将数字转换成字符串
string itoa(int num)
{
stringstream ss;
ss << num;
return ss.str();
}

class User
{
public:
User(){
gender=0;
};

User(const string& userName const string& password int gender const string& mobile const string& email){
this->userName=userName;
this->password=password;
this->gender=gender;
this->mobile=mobile;
this->email=email;
};

string userName;
string password;
int gender;
string mobile;
string email;
};

//function:create a xml file
//param:xmlPath:xml文件路径
//return:0成功,非0,失败
int createxml(const char* xmlPath)
{
const char* declaration =“l version=\“1.0\“ encoding=\“UTF-8\“ standalone=\“no\“?>“;
xmlDocument doc;
doc.Parse(declaration);//会覆盖xml所有内容

//添加默认的申明可以使用如下两行
//xmlDeclaration* declaration=doc.NewDeclaration();
    //doc.InsertFirstChild(declaration);

xmlElement* root=doc.NewElement(“DBUSER“);
doc.InsertEndChild(root);

return doc.SaveFile(xmlPath);
}

//function:insert xml node
//param:xmlPath:xml文件路径; user:用户对象
//return:0:成功; 非0:失败
int insertxmlNode(const char* xmlPathconst User& user)
{
xmlDocument doc;
int res=doc.LoadFile(xmlPath);
if(res!=0)
{
cout<<“load xml file failed“< return res;
}
xmlElement* root=doc.RootElement();

xmlElement* userNode = doc.NewElement(“User“);
userNode->SetAttribute(“Name“user.userName.c_str());
userNode->SetAttribute(“Password “user.password.c_str());
root->InsertEndChild(userNode);

xmlElement* gender = doc.NewElement(“Gender“);
xmlText* genderText=doc.NewText(itoa(user.gender).c_str());
gender->InsertEndChild(genderText);
userNode->InsertEndChild(gender);

xmlElement* mobile = doc.NewElement(“Mobile“);
mobile->InsertEndChild(doc.NewText(user.mobile.c_str()));
userNode->InsertEndChild(mobile);

xmlElement* email = doc.NewElement(“Email“);
email->InsertEndChild(doc.NewText(user.email.c_str()));
userNode->InsertEndChild(email);

return doc.SaveFile(xmlPath);
}

//function:根据用户名获取用户节点
//param:root:xml文件根节点;userName:用户名
//return:用户节点
xmlElement* queryUserNodeByName(xmlElement* rootconst string& userName)
{

xmlElement* userNode=root->FirstChildElement(“User“);
while(userNode!=NULL)
{
if(userNode->Attribute(“Name“)==userName)
break;
userNode=userNode->NextSiblingElement();//下一个兄弟节点
}
return userNode;
}

User* queryUserByName(const char* xmlPathconst string& userName)
{
xmlDocument doc;
if(doc.LoadFile(xmlPath)!=0)
{
cout<<“load xml file failed“< return NULL;
}
xmlElement* root=doc.RootElement();
xmlElement* userNode=queryUserNodeByName(rootuserName);
cout<<“end query UserNode“<
if(userNode!=NULL)  //searched successfully
{
cout<<“userNode exist“< User* user=new User();
user->userName=userName;
//string passwordAttr=userNod

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8000  2015-09-26 11:05  tinyxml2\main.cpp

     文件        296  2015-09-25 18:30  tinyxml2\makefile

     文件      64220  2015-08-20 07:37  tinyxml2\tinyxml2.cpp

     文件      63676  2015-08-20 07:37  tinyxml2\tinyxml2.h

     文件      31441  2015-09-26 11:12  tinyxml2\tinyxml2简介与用法用例.docx

     文件         54  2015-09-26 10:40  tinyxml2\user.xml

     目录          0  2015-09-26 11:12  tinyxml2

----------- ---------  ---------- -----  ----

               167687                    7


评论

共有 条评论