tinyxml笔记

创建一个xml文件

代码示例如下

<code>    //首先声明一个XMLDocument对象
XMLDocument doc;
//添加声明,描述信息
XMLDeclaration* declaration = doc.NewDeclaration();
//将声明信息 加入到xml文件中
doc.InsertFirstChild(declaration);
//创建一个节点 root 节点名为father
XMLElement* root = doc.NewElement("father");
//为root节点添加属性信息 属性名为name 值为 fuqin
root->SetAttribute("name", "fuqin");
root->SetAttribute("Password", "aaa");
//将root节点信息 加入到xml文件中
doc.InsertEndChild(root);
//创建一个新的节点 childNode 节点名为child
XMLElement* childNode = doc.NewElement("child");
childNode->SetAttribute("Name", "erzi");
childNode->SetAttribute("Password ", "bbb");
//将childNode节点放到root节点下 作为root节点的子节点
root->InsertEndChild(childNode);
//保存xml文件
doc.SaveFile(xmlPath);
/<code>

结果展示

<code>
<father>
<child>
/<father>
/<code>

增加节点信息

<code>    //声明一个XMLDocument对象
XMLDocument doc;
//加载XML文件
if (doc.LoadFile(xmlPath) != 0)

{
cout << "load xml file failed" << endl;
return false;
}
//查找XML文件中 第一个father节点
XMLElement* root = doc.FirstChildElement("father");
//查找XML文件中 第一个father2节点
XMLElement* root3 = doc.FirstChildElement("father2");
//向root3节点中添加一个文本信息
root3->InsertFirstChild(doc.NewText("我是第二个子节点"));
//查找下一个father2节点信息 这里需要主要的是 如果NextSiblingElement函数没有传入参数 则该函数返回的当前节点的下一个节点信息 而不是下一个father2节点信息
root3 = root3->NextSiblingElement("father2");
//向root3节点中添加一个文本信息
root3->InsertFirstChild(doc.NewText("我是第三个个子节点"));
//创建一个新的节点 root2 节点名为father2
XMLElement* root2 = doc.NewElement("father2");
//为root2 设置属性信息
root2->SetAttribute("name", "fuqin2");
root2->SetAttribute("Password", "aaa2");
//将root2 添加进入文件的根节点中
doc.InsertEndChild(root2);
//查找root节点下的第一个子节点为child的节点信息
XMLElement* fatherNode = root->FirstChildElement("child");
//为该节点添加文本信息
XMLText* childText = doc.NewText("我是子节点");
fatherNode->InsertFirstChild(childText);
//保存文件
return doc.SaveFile(xmlPath);
/<code>

删除节点信息

<code>    XMLDocument doc;
if (doc.LoadFile(xmlPath) != 0)
{
cout << "load xml file failed" << endl;
return false;
}
//找到第一个father节点
XMLElement* root = doc.FirstChildElement("father");
//删除father节点所有信息
doc.DeleteChild(root);
//找到第一个father2节点
XMLElement* root2 = doc.FirstChildElement("father2");
//删除father2的name属性
root2->DeleteAttribute("name");
//找到第一个father节点信息
XMLElement* root3 = doc.FirstChildElement("father");
//找到father节点下的 第一个child属性
XMLElement* childNode = root3->FirstChildElement("child");
//将child属性的文本值设置为空
childNode->SetText("");
return doc.SaveFile(xmlPath);
/<code>

修改节点信息

<code>    XMLDocument doc;
if (doc.LoadFile(xmlPath) != 0)
{
cout << "load xml file failed" << endl;
return false;
}

XMLElement* root = doc.FirstChildElement("father");
if (root != NULL)
{
//获取属性name信息
string value = root->Attribute("name");
//获取节点的文本值信息
string value2 = root->GetText();
cout << value << endl << value2 << endl;
//修改属性name信息

root->SetAttribute("name","changeName");
//修改文本值信息
root->SetText("修改text");
}
return doc.SaveFile(xmlPath);
/<code>

查询节点信息

<code>    XMLDocument doc;
if (doc.LoadFile(xmlPath) != 0)
{
cout << "load xml file failed" << endl;
return false;
}

XMLElement* root = doc.FirstChildElement("father");
if (root != NULL)
{
//获取root节点的name属性值信息
cout << root->Attribute("name") << endl;
//获取root节点的Password属性值信息
cout << root->Attribute("Password") << endl;
//获取root节点的文本值信息
cout << root->GetText() << endl;
}
return 0;
/<code>


分享到:


相關文章: