tinyxml学习笔记

tinyxml学习笔记

创建一个xml文件

代码示例如下

    //首先声明一个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);

结果展示

<?xml version="1.0" encoding="UTF-8"?>
<father name="fuqin" Password="aaa">
    <child Name="erzi" Password="bbb"/>
</father>

增加节点信息

    //声明一个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);

删除节点信息

    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);

修改节点信息

    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);

查询节点信息

    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;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值