一、创建XML文件
bool CreatXmlFile(const QString &filePath,const QString &name)
{
TiXmlDeclaration *dec = new TiXmlDeclaration("1.0","utf-8","");
TiXmlDocument *doc = new TiXmlDocument();
doc->LinkEndChild(dec);
TiXmlElement *root = new TiXmlElement("root"); //根目录
doc->LinkEndChild(root );
TiXmlElement *node = new TiXmlElement("Name"); //子目录
TiXmlText *value = new TiXmlText(name.toStdString())
node->LinkEndChild(value);
root->InsertEndChild(*node);
doc->SaveFile(filePath.toStdString());
return true;
}
二、解析XML,查找指定标签的值
QList<Qstring> ReadXmlFile(QString &filePath)
{
TiXmlDocument *doc;
QString name = "",age = "";
QList<Qstring> list;
if(doc->LoadFile(filePath.toStdString()))
{
TiXmlElement *root = doc.RootElement();
TiXmlElement *pt = root->FirstChildElement();
while(pt != NULL)
{
const QString str = pt->Value();
if(!str.compare("Name"))
{
name = pt->GetText();
}
else if(!str.compare("Age"))
{
age = pt->GetText();
}
list << name << age;
pt = pt->NextSiblingElement();
}
}
return list;
}
三、添加节点
void AddXmlFile(const QString &filePath,QString &node)
{
TiXmlDocument *doc;
if(doc->LoadFile(filePath.toStdString()))
{
TiXmlElement *element = doc->RootElement();
TiXmlElement *pNode= new TiXmlElement("Name");
TiXmlText *value = new TiXmlText(node.toStdString());
pNode->LinkEndChild(value);
element->InsertEndChild(*pNode);
doc->SaveFile(filePath.toStdString());
return;
}
}
四、删除指定节点
void DeleteXmlNode(const QString &path,const QString &node)
{
TiXmlDocument *doc;
if(!doc->LoadFile(path.toStdString()))
{
TiXmlElement *element = doc->RootElement();
TiXmlElement *pt = element->FirstChildElement();
while(pt != NULL)
{
const QString ver = pt->GetText();
if(ver == node)
{
element->RemoveChild(pt->ToElement());
doc->SaveFile(path.toStdString());
break;
}
pt= pt->NextSiblingElement();
}
}
}
五、修改指定标签的值
void ChangeAssignLabelVable(const QString &path, const QString &nodeStr,const QString &valueStr)
{
TiXmlDocument *doc;
if(!doc->LoadFile(path.toStdString()))
{
TiXmlElement *element = doc->RootElement();
TiXmlElement *pt = element->FirstChildElement(nodeStr);
pt->clear();
TiXmlText *value = new TiXmlText(valueStr);
pt->LinkEndChild(value);
doc->SaveFile();
}
}