资源简介
资源包含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 tinyxm
文件 296 2015-09-25 18:30 tinyxm
文件 64220 2015-08-20 07:37 tinyxm
文件 63676 2015-08-20 07:37 tinyxm
文件 31441 2015-09-26 11:12 tinyxm
文件 54 2015-09-26 10:40 tinyxm
目录 0 2015-09-26 11:12 tinyxm
----------- --------- ---------- ----- ----
167687 7
- 上一篇:mpq解压工具易语言源码
- 下一篇:液晶显示广告牌的设计
评论
共有 条评论