C++ xml库的选择

2023-11-18

自从触及xml文件的读写,一直以来都是用的tinyxml2,接口简单,然而近期项目频繁出错,跟踪调试发现,问题出在了xml文件的读写上,当节点数超过百万级别的时候,内存暴增到G的当量,很显然程序会由于内存申请不足崩掉了。果断寻找替代品,百度搜索找到了pugixml开源库,将原有的调用tinyxml2接口的近千行代码替换之后,运行程序,一切顺利,速度感觉还较之前的有所提示。

2者调用区别(被注释屏蔽掉的代码是tinyxml2接口调用部分):

	// xml文件声明
    // tinyxml2::XMLDocument docCalKml;
	pugi::xml_document docCalKml;	

    // xml文件内容编码格式声明
	//tinyxml2::XMLDeclaration *declare = docCalKml.NewDeclaration(_T("xml version=\"1.0\" encoding=\"UTF-8\""));
	//docCalKml.InsertEndChild(declare);
	pugi::xml_node declare = docCalKml.prepend_child(pugi::node_declaration);
	declare.append_attribute("version").set_value("1.0");
	declare.append_attribute("encoding").set_value("UTF-8");

    // 节点值的写入
    //XMLElement* eleSRSId = docCalXml.NewElement(_T("Id"));
	//eleSRSId->SetText(0);
	//eleSRS->InsertEndChild(eleSRSId);
	pugi::xml_node eleSRSId = eleSRS.append_child("Id");
	eleSRSId.append_child(pugi::node_pcdata).set_value("0");

    // 节点值的读取
    //XMLElement* eleOpticalProperties = docOpt.RootElement();// ->FirstChildElement(_T("OpticalProperties"));
	//XMLElement* eleOpticalPropertiesId = eleOpticalProperties->FirstChildElement(_T("Id"));
	//int nOpticalPropertiesId = eleOpticalPropertiesId->IntText();
	pugi::xml_node eleOpticalProperties = docOpt.root().first_child();
	pugi::xml_node eleOpticalPropertiesId = eleOpticalProperties.child("Id");
	int nOpticalPropertiesId = eleOpticalPropertiesId.text().as_int();

    // 文件保存
    //if (tinyxml2::XML_SUCCESS != docCalKml.SaveFile(strCalKmlFile))
	if (!docCalKml.save_file(strCalKmlFile, PUGIXML_TEXT("\t"), pugi::format_default | pugi::format_no_declaration | pugi::format_no_escapes, pugi::encoding_utf8))
		return FALSE;
	else
		return TRUE;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ xml库的选择 的相关文章

  • 如何向 UWP 项目添加 .NET dll 引用?

    我有几个适用于 NETv4 x 的 NET dll 项目 我将版本更改为 4 6 1 并重新构建 没有出现问题 当我尝试从 UWP 项目向它们添加引用时 出现错误 项目的目标是 NETCore 而文件引用的目标是 NET框架 这不是受支持的
  • 处理 LINQ sum 表达式中的 null

    我正在使用 LINQ 查询来查找列的总和 并且在少数情况下该值有可能为空 我现在使用的查询是 int score dbContext domainmaps Where p gt p SchoolId schoolid Sum v gt v
  • boost线程在中断时不打印退出消息

    我有这段代码用于执行三个线程 其中第二个线程应在按 Enter 时中断并打印退出消息 void input val DO STUFF return void process val DO STUFF try cout lt lt waiti
  • 对数字进行向上和向下舍入 C++

    我试图让我的程序分别向上和向下舍入数字 例如 如果数字是3 6 我的程序应该四舍五入最接近的数字 4 如果该数字是3 4 它将向下舍入为 3 我尝试使用ceil库获取 3 个项目的平均值 results ceil marks1 marks2
  • 使用 VSTO 更改 Outlook 设置

    我刚刚花了大约 4 个小时试图弄清楚如何以编程方式检索 设置 Microsoft Outlook 2010 的 Outlook 设置 我所说的 设置 是指文件 选项 邮件下的设置 我想做的是检索用户设置的设置列表 自动化我们每天需要在某些消
  • 使用 XSLT 检查空 XML 元素

    我有以下 XML
  • 成员初始值设定项列表中的求值顺序是什么?

    我有一个带有一些参数的构造函数 我假设它们是按照列出的顺序初始化的 但在一种情况下 它们似乎是按相反的顺序初始化的 导致中止 当我反转参数时 程序停止中止 下面是我正在使用的语法的示例 a 之前需要初始化b 在这种情况下 你能保证这个初始化
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • 捕获当前正在播放的声音

    是否可以捕获计算机上当前播放的声音 如果能够将其保存为 mp3 就好了 但我认为这样做会存在一些法律问题 所以 wav 也可以 我环顾四周 有人建议使用虚拟音频线之类的东西 在 C 中捕获声音输出 https stackoverflow c
  • 推送 Lua 表

    我已经创建了一个Lua表C 但我不知道如何将该表推入堆栈顶部 以便我可以将其传递给 Lua 函数 有谁知道如何做到这一点 这是我当前的代码 lua createtable state libraries size 0 int table i
  • 为什么以下代码不允许我使用 fgets 获取用户输入但可以使用 scanf?

    这是一个更大程序的简短摘录 但该程序的其余部分无关紧要 因为我认为我能够隔离该问题 我怀疑这与我使用 fgets 的方式有关 我读过 最好使用 fgets 而不是 scanf 但我似乎无法让它在这里正常工作 当我使用以下代码时 程序不会给我
  • 在可观察项目生成时对其进行处理

    我有一个IObservable它会生成一次性物品 并且在其生命周期内可能会生成无限数量的物品 因此 我想在每次生成新项目时处理最后一个项目 因此Using http reactivex io documentation operators
  • 标准 C 中的 sizeof 与 sizeof()? [复制]

    这个问题在这里已经有答案了 我看到一些直接使用 sizeof 的代码 想知道它是否是标准 C 令我惊讶的是 它运行得很好 这是一个例子 include
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • 便携式终端

    有没有办法根据所使用的操作系统自动使用正确的 EOL 字符 我在想类似的事情std eol 我知道使用预处理器指令非常容易 但很好奇它是否已经可用 我感兴趣的是 我的应用程序中通常有一些消息 稍后我会将这些消息组合成一个字符串 并且我希望将
  • 为什么我不能在扩展 List 的类中调用 OrderBy?

    我有一堂课 Deck 其中包含一个名为的方法Shuffle 我正在致力于重构Deck延长List
  • 在 MVVM 中,可以在视图后面的代码中访问 ViewModel 吗?

    在 MVVM 模式中 是否可以接受甚至可以访问视图代码后面的 ViewModel 属性 我有一个可观察的集合 它填充在 ViewModel 中 我需要在视图中使用它来绑定到带有链接列表的无限滚动条 IE private LinkedList
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • 如何使复选框不可选择?

    我想知道你是怎么做的CheckBox在c 中无法选择 我认为这会是类似 SetSelectable false 之类的东西 但我似乎看不到该方法 I found CanSelect但这似乎是只读属性 您可以设置自动检查 http msdn
  • Windows 上 libcurl 的静态库[重复]

    这个问题在这里已经有答案了 如何将此库 libcurl 静态链接到 exe 我努力了 disable share enable static 没有帮助 我使用的是MingW32 有没有一种简单的方法来静态链接这个库 这样我的应用程序就不再有

随机推荐

  • ChatGPT知多少?小白扫盲,通俗易懂

    一 ChatGPT到底是什么 ChatGPT是由OpenAI 发布的自然语言模型 它的英文全称是 Chat Generative Pre trained Transformer 直译过来就是作为聊天使用的生成式预训练转换器 其中 Chat代
  • 此时不应有java_Java出现"此时不应有......."的错误

    今晚在安装weblogic的时候 双击运行startWebLogic cmd dos窗口一闪而过 随后将 startWebLogic cmd 拖进cmd窗口运行 显示 此时不应有 tools jar 然后我把环境变量CLASSPATH中的
  • H265视频转码H264视频

    LiveMedia视频平台提供H5网页web前端无插件视频码流 但目前主流浏览器和播放器都只支持H264的码流 但是随着编码技术的迭代 目前H265编码的视频已在安防行业得到了广泛的使用 平台仅支持H264需要客户修改前端的视频编码 这样会
  • html动态标题设计源码

    html酷炫动态发光标题 效果图如下 index html
  • 【spring boot logback】日志颜色渲染,使用logback-spring.xml自定义的配置文件后,日志没有颜色了...

    接着spring boot日志logback解析之后 发现使用logback spring xml自定义的配置文件后 日志没有颜色了 怎么办 官网处理日志链接 https logback qos ch manual layouts html
  • BeautifulSoup库

    BeautifulSoup安装 1 以管理员运行cmd 2 输入 pip install beautifulsoup4 BeautifulSoup库的基本元素 BeautifulSoup库的理解 BeautifulSoup库是解析 遍历 维
  • 【分享干货】Mac系统IDEA 安装教程

    IEEA 安装 什么是idea idea 介绍 idea官网 https www jetbrains com 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img Pynu6DTk 1654592966880 User
  • Java封装性(包含this关键字,构造器等)

    目录 一 封装性的含义 二 封装性的作用 三 封装性的体现 3 1 四种权限修饰符的介绍 3 2 分装性具体的实现 四 构造器的解释 4 1 构造器的作用 4 2 注意事项 4 3 构造器的举例说明 五 this关键字的使用 5 1 thi
  • jdk8的十大新特性

    了解jdk8的新特性首先要了解jdk7的新特新都有哪些方面增强 1 jdk语法上 1 1二进制变量的表示 支持将整数类型用二进制来表示 用Ob开头 1 2Switch语句支持String类型 1 3Try with resource语句 注
  • 欢欢喜喜: 在lenovo网站购T61的经历

    1月3日 在lenovo网站购T61的经历 一直以来对IBM的小黑情有独钟 不过考虑国内昂贵的价格和需求的迫切性不高 所以 也只是观望中 上次去米果的时候 看到lenovo网上卖的T61笔记本 标的价格比平时都低300 于是动了心 开始在
  • 使用 PullToRefresh 的总结

    前言 关于下拉刷新 上拉加载的框架现在有很多 这里奉上别人收集的一些框架 下拉刷新框架收集 但是笔者一直还在使用 PullToRefresh 个人觉得 PullToRefresh 使用起来还是比较简洁方便的 关于 PullToRefresh
  • unity-ugui-eventsystem

    EventSystem对象的说明 当我们在场景中创建任一UI对象后 Hierarchy面板中都可以看到系统自动创建了对象EventSystem 可以看到该对象下有三个组件 EventSystem StandaloneInputModule
  • 七天引爆社交新零售(助你提高十倍业绩)——前言

    2019年对于中小企业主 创业者 实体店主最大的机遇就是社交新零售 为什么这么说呢 随着日益上涨房租成本 人工成本的上升 实体生意利润空间越来越小了 而传统线上电商企业流量广告费也越来越贵了 大家一直在探索有没有一种低成本高收益的销售方式出
  • stream()转map转list、distinct()去重、判断空值、sorted排序正序多字段排序

    package demo io import demo api JavaBean Student import org junit platform commons util StringUtils import java util imp
  • 镜头快速精准反馈位置硬件环境搭建

    目录 概述 一 检测部分 1 原理图 2 PCB板 二 驱动部分 1 原理图 2 PCB板 概述 本篇只要介绍 硬件电路搭建 这次是项目的需要 重新捡起好多年没使用 Altium Designer 软件了 熟悉又陌生 经过2 3天时间 终于
  • 想要精通算法和SQL的成长之路 - 最长回文子序列

    想要精通算法和SQL的成长之路 最长回文子序列 前言 一 最长回文子序列 前言 想要精通算法和SQL的成长之路 系列导航 一 最长回文子序列 原题链接 首先 我们看下动态规划方程的定义 我们用dp i j 来代表 字符串s在下标区间为 i
  • Django连接MySQL数据库时出错:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No mo

    基于python3解释器的虚拟环境中创建的Django项目 Django中默认连接的是SQLite3数据库 现更改为MySQL数据库 执行迁移文件时报错 django core exceptions ImproperlyConfigured
  • html5 调用本地街景,H5案例分享:在移动端调用腾讯街景

    在移动端调用腾讯街景 腾讯地图街景组件可以通过多种方式调起 来展示3D街景信息 腾讯街景API 是构建在v2版本上的全新应用接口 对于目的地 可以让用户足不出户 得到更直观 更真切 的身临其境的体验 比如 您可以就用在 房产 酒店 餐饮 娱
  • 使用Java 8函数式编程生成字母序列

    在 Java 8 中使用函数式编程生成字母序列是一个很大的挑战 Lukas Eder 愉快地接受了这个挑战 他将告诉我们如何使用 Java 8 来生成ABC的序列 当然 肯定不是一种蹩脚的方式 我被 Stack Overflow 上网友 m
  • C++ xml库的选择

    自从触及xml文件的读写 一直以来都是用的tinyxml2 接口简单 然而近期项目频繁出错 跟踪调试发现 问题出在了xml文件的读写上 当节点数超过百万级别的时候 内存暴增到G的当量 很显然程序会由于内存申请不足崩掉了 果断寻找替代品 百度