首页 > 其他分享 >tinyxml使用样板

tinyxml使用样板

时间:2024-01-19 20:23:32浏览次数:20  
标签:tinyxml2 key3 doc SetAttribute element tinyxml 使用 样板 root

#include "tinyxml2.h"

//创建一个XML
void CreateXml()
{
    //添加根元素root
    tinyxml2::XMLDocument* doc = new tinyxml2::XMLDocument();
    tinyxml2::XMLElement* root = doc->NewElement( "root" );
    doc->InsertFirstChild(root);
    
    //添加child元素element并设置属性
    tinyxml2::XMLElement* element = doc->NewElement( "element" );
    element->SetAttribute("key1", "abc");
    element->SetAttribute("key2", "123");
    element->SetAttribute("key3", "abc");
    root->InsertFirstChild(element);
    element = doc->NewElement( "element" );
    element->SetAttribute("key1", "efg");
    element->SetAttribute("key2", "456");
    element->SetAttribute("key3", "efg");
    root->LinkEndChild(element);
    element = doc->NewElement( "element" );
    element->SetAttribute("key1", "efg1");
    element->SetAttribute("key2", "4567");
    element->SetAttribute("key3", "efg1");
    root->LinkEndChild(element);
    
    //添加child元素text并设置text
    element = doc->NewElement( "text" );
    element->SetText("hello world");
    root->LinkEndChild(element);
    
    doc->Print();
    doc->SaveFile("test.xml");
    delete doc;
}

void ReadXml()
{
    tinyxml2::XMLDocument doc;
    doc.LoadFile("test.xml");
    if (0 != doc.ErrorID())
    {
        printf("[errorId=%d, file=%s]load xml file fail\n", doc.ErrorID(), "example.xml");
        return;
    }
    tinyxml2::XMLElement* elementRoot = doc.FirstChildElement("root");
    if (NULL == elementRoot)
    {
        printf("xml element elementRoot not exist\n");
        return;
    }
    tinyxml2::XMLElement* element = elementRoot->FirstChildElement("element");
    while( element !=  NULL)
    {
        const char* key1 = NULL;
        element->QueryStringAttribute("key1", &key1);    
        printf("key1:%s ", key1);
        int key2 = 0;
        element->QueryIntAttribute("key2", &key2);
        printf("key2:%d ", key2);    
        const char* key3 = 0;
        element->QueryStringAttribute("key3", &key3);
        printf("key3:%s\n", key3);    
        element = element->NextSiblingElement();
    }
    element = elementRoot->FirstChildElement("text");
    const char* str = element->GetText();
    printf("<text>%s</text>\n", str);
}

int main()
{
    CreateXml();
    ReadXml();
    return 0;
}

 

标签:tinyxml2,key3,doc,SetAttribute,element,tinyxml,使用,样板,root
From: https://www.cnblogs.com/ho966/p/17975501

相关文章

  • 在vue2中使用leaflet.AnimatedMarker来移动某个目标
    需求是:点击某个按钮后让扫描仪沿着某条线移动进行扫描效果:  扫描仪是沿着河流移动的,河流的生成方式通过geojson数据生成,geojson里包含了河流的一些点位的经纬度,扫描仪根据经纬度来移动leaflet:1.9.4 leaflet.AnimatedMarker:1.0.0 1.引入 importLfrom'leaf......
  • 中间件 ZK分布式专题与Dubbo微服务入门 4-15 acl的常用使用场景
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12711 1重点关注1.1zk集群,主从节点,心跳机制(选举模式) 选举模式介绍1xx主节点(主人),yy和zz从节点(奴隶)2xx主节点挂掉了,yy和zz竞争当主人,结果zz成功上位,zz是主节点,yy是从节......
  • 使用pnpm来管理vue项目的node_modules
    要使用pnpm,先确保nodejs版本在16以上(目前用的18.16.1)(确保本地已经全局安装了pnpm如果没有安装就使用npmi-gpnpm来全局安装)一.老项目从npm迁移到pnpm  先删掉项目中的node_modules文件夹和package-lock.json文件   在终端运行pnpmi 安装成功后根目录下会多一......
  • 使用 postman 进行接口自动化测试
    新建一个合集创建新的请求保存在此合集下,并添加测试脚本//根据返回的Code判断请求情况tests["HTTP响应成功"]=responseCode.code===200;varjsonData=JSON.parse(responseBody);tests["业务处理成功"]=jsonData.statusCode===100;运行合集请求运行结果......
  • npm 的使用总结
    一、新域名官方地址:https://npmmirror.com镜像地址:https://registry.npmmirror.com老域名:http://npm.taobao.org和http://registry.npm.taobao.org将在2022.06.30号正式下线和停止DNS解析原来的 registry.npm.taobao.org 已替换为 registry.npmmirror.c......
  • 使用Nuxt框架刷新页面向后端接口请求两次的问题
    背景:当我刷新页面时,发现后端接口被请求了两次前端使用框架:nuxt、vue、axios等后端使用框架:springboot、maven、redis、mybatisplus等主页面程序代码<script>importhomePagefrom'@/api/homePage'exportdefault{data(){return{bannerList:[],//轮播......
  • python使用selenium操作浏览器的教程
    重复的操作令手工测试苦不堪言,于是自动化测试出现了!作为web应用里最出名的自动化测试工具,selenium让web应用的测试轻松了很多。今天我们就来简单的介绍一下一些简单的selenium浏览器操作。接下来我们就来看看python怎么操作浏览器的吧!1、打开指定的网页地址我们使用selenium进行自......
  • SpringBoot使用Feign进行服务间通信
    一、前言在分布式系统中,服务间通信是非常常见的情况。Feign是一个开源的JavaHTTP客户端,可以帮助我们在SpringBoot应用中快速构建和使用HTTP客户端,方便实现服务间的通信。与其他HTTP客户端相比,Feign具有简化HTTPAPI定义、支持多种HTTP请求方法、支持请求和响应的压缩、支持请求和......
  • wpf 内存减少使用 GC回收
    代码App.xaml.csprotectedoverridevoidOnStartup(StartupEventArgse){//新增内存回收this.MemoryHelper();} privatevoidMemoryHelper(intsecond=30){Threadt=newThread(()=>{while(......
  • 使用 Swift 代码优化项目编译速度
    引言软件的性能是评价一个软件质量的重要指标,尤其在今天这个时代,性能已成为大型项目不可或缺的考虑因素之一。对于用户量极大的软件,如网银系统、在线购物商城等,更是必须保证其高效稳定的性能。在这种背景下,优化项目的编译速度就显得尤为重要。本文将介绍如何使用Swift代码优化......