使用Boost读写XML文件

2023-11-30

有没有什么好的方法(也是一个简单的方法)使用Boost来读写XML文件?

我似乎找不到任何使用 Boost 读取 XML 文件的简单示例。您能给我指一个使用 Boost 读写 XML 文件的简单示例吗?

如果不是 Boost,有什么好的、简单的库可以推荐来读写 XML 文件吗? (它必须是一个C++库)


你应该试试pugixml 用于 C++ 的轻量级、简单且快速的 XML 解析器

pugixml 最好的一点是XPath支持,这是 TinyXML 和 RapidXML 所缺乏的。

引用 RapidXML 的作者的话“我要感谢 Arseny Kapoulkine 在 pugixml 上所做的工作,这是这个项目的灵感”和“比 pugixml 快 5% - 30%,我所知道的最快的 XML 解析器”他已经针对版本 0.3 进行了测试pugixml 的最新版本已达到 0.42。

以下是 pugixml 文档的摘录:

主要特点是:

  • 低内存消耗和碎片(战胜 pugxml 约为 1.3 倍,TinyXML - 约为 2.5 倍,Xerces (DOM) - 约为 4.3 倍 1)。确切的数字可以在与现有解析器的比较部分中看到。
  • 极高的解析速度(战胜 pugxml 约为 6 倍,TinyXML - 〜10 倍,Xerces-DOM - 〜17.6 倍 1
  • 极高的解析速度(好吧,我重复一遍,但它太快了,在测试 XML 上它的性能比 Expat 快 2.8 倍)2
  • 或多或少符合标准(它将正确解析任何符合标准的文件,但 DTD 相关问题除外)
  • 几乎不会出现错误(它不会像你和我这样的东西窒息,就像外籍人士那样;它会解析带有错误编码的数据的文件;等等)
  • 干净的界面(经过大量重构的 pugxml 的界面)
  • 或多或少支持 Unicode(实际上,它假定输入数据采用 UTF-8 编码,尽管它很容易与 ANSI 一起工作 - 目前没有 UTF-16(请参阅未来的工作),并具有辅助转换函数 (UTF-8 UTF-16/32(无论 std::wstring 和 wchar_t 的默认值是什么))
  • 完全符合标准的 C++ 代码(经 Comeau 严格模式批准);该库是多平台的(请参阅平台列表参考)
  • 高灵活性。您可以通过解析选项控制文件解析和 DOM 树构建的许多方面。

好吧,你可能会问 - 有什么问题吗?一切都那么可爱 - 它是用于解析 XML 的小型、快速、强大、干净的解决方案。缺什么?好吧,我们是公平的开发者 - 所以这里有一个错误列表:

  • 内存消耗。它击败了我所知道的所有基于 DOM 的解析器——但是当 SAX 解析器出现时,就没有机会了。您无法使用少于 4 Gb 的内存来处理 2 Gb XML 文件 - 而且速度很快。尽管 pugixml 比所有其他基于 DOM 的解析器表现得更好,所以如果您坚持使用 DOM,这不是问题。
  • 内存消耗。好吧,我重复一遍。再次。当其他解析器允许您在常量存储(甚至作为内存映射区域)中提供 XML 文件时,pugixml 不会。因此,您必须将整个数据复制到非常量存储中。此外,它应该在解析器的生命周期内持续存在(其原因以及有关生命周期的更多信息如下)。再说一遍,如果您对 DOM 没问题 - 这应该不是问题,因为总体内存消耗较少(好吧,尽管您需要一块连续的内存,这可能是一个问题)。
  • 缺乏验证、DTD 处理、XML 命名空间、编码的正确处理。如果您需要这些,请使用 MSXML 或 XercesC 或类似的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Boost读写XML文件 的相关文章

  • 如何在另一个应用程序中挂钩 api 调用

    我正在尝试挂钩另一个应用程序的 ExtTextOut 和 DrawTextExt GDI 方法调用 我知道我需要使用 GetProcAddress 来查找 gdi32 dll 中那些方法的地址 并用我的函数的地址覆盖我想要挂钩的进程中的地址
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 删除是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 C 编程 free 如何知道要释放多少 https stackoverflow com questions 1518711 c programming how does free know how m
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 如何使用 SOAP 且不使用 WSE 在 .NET 中签署 Amazon Web 服务请求

    亚马逊产品广告 API 以前称为 Amazon Associates Web Service 或 Amazon AWS 实施了一项新规则 即自 2009 年 8 月 15 日起 向其发送的所有 Web 服务请求都必须经过签名 他们在其网站上
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 删除 XML 中的指定标签 (notepad++)

    我的 GPS 轨迹有一个 非常 大的 XML 文件 它是这样构建的
  • 如何制作可启动程序?

    所以 这个问题可能看起来很奇怪 但假设我编译了 int main void int x 3 int y 4 int z x y 是否可以让CPU这样运行 如何 例如 这允许我写入监视器吗 如果我没记错的话 内存中有些地方可以写入要显示的内容
  • 计算另一个表达式中的 C# 表达式

    我想在另一个表达式中使用一个表达式 Expression
  • 获取 boost Spirit 语法中的当前行

    我正在尝试使用 boostspirit 获取正在解析的文件的当前行 我创建了一个语法类和结构来解析我的命令 我还想跟踪在哪一行找到命令并将其解析到我的结构中 我将 istream 文件迭代器包装在 multi pass 迭代器中 然后将其包
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • C#6 中的长字符串插值行

    我发现 虽然字符串插值在应用于现有代码库的字符串 Format 调用时非常好 但考虑到通常首选的列限制 字符串对于单行来说很快就会变得太长 特别是当被插值的表达式很复杂时 使用格式字符串 您将获得一个可以拆分为多行的变量列表 var str
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • .NET 4 的条件编译[重复]

    这个问题在这里已经有答案了 可能的重复 条件编译和框架目标 https stackoverflow com questions 2923210 c sharp conditional compilation and framework ta
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • LINQ 中的“from..where”或“FirstOrDefault”

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c

随机推荐

  • 对具有输入和输出历史依赖性的操作进行矢量化的最佳方法?

    我的目标是在 numpy 中向量化以下操作 y n c1 x n c2 x n 1 c3 y n 1 If n是时间了 我基本上需要依赖于之前的输入以及之前的输出的输出 我被赋予的价值观x 1 and y 1 另外 这是我的实际问题的通用版
  • 如何在ListView中单击复选框时使按钮栏从底部滑入?

    我有一个带有自定义列表适配器的列表视图 它使用复选框和一些文本视图填充列表视图 当用户选择一个复选框时 我需要一个按钮栏从屏幕底部滑入视图并坐在那里 我已经制作了按钮栏 并且可以通过将其可见性更改为 消失 和 可见 来使其在屏幕上出现和消失
  • 如何用空格/空格替换连字符? php

    我对 PHP 不太了解 但这些天我正在修改现有的脚本 我想知道如何用空白或空白替换 例如 一个变量包含 爱你 我想用 爱你 这样的空格替换它们之间的连字符 我会感谢您的反馈 str str replace Love you now str是
  • 全局内核中的 CUDA 变量

    我的问题是 1 我的理解是否正确 当您在全局内核中声明一个变量时 每个线程都会有该变量的不同副本 这允许您为每个线程在该变量中存储一些中间结果 示例 向量 c a b global void addKernel int c const in
  • 在 Twitter Api 中通过 id 获取用户名

    如何通过对 Twitter Api 的请求通过 userid 获取用户名 其他一些方法 例如followers ids 给我们一个 ID 数组作为响应 我不知道如何从中获取他们的用户名 该方法的响应 followers ids 看起来像这样
  • 如果修改了包含的元素,Java HashSet 将包含重复项

    假设您有一个类 并且创建了一个可以存储该类的实例的 HashSet 如果您尝试添加相等的实例 则集合中只会保留一个实例 这很好 但是 如果 HashSet 中有两个不同的实例 并且您获取一个实例并使其成为另一个实例的精确副本 通过复制字段
  • 将文字与可选字符串连接

    实施这个的正确方法是什么 最好排成一行 var name String let username name Note username必须是String 我不想拆开name用于串联 编辑 如果name is nil username也应该是
  • 实体框架创建最新的 IQueryable

    我有一个实体集 其中的实体具有包含 ID GUID 和 CreatedAt DateTime 的复合键 CreatedAt 是实体被创建的时间 每个记录代表每个实体的每个版本 以便多个记录可以具有相同的 ID 我想创建一个可以重复使用的 I
  • 如何在 Typescript 中输入动态大小的数组?

    我想输入一个数组 其中第一个元素始终是数字 其余元素始终是字符串 并且长度至少为 1 这是我最大的努力 type MyArray number number string number string string number string
  • 表单标签在一个 div 中开始并在另一个 div 中结束是否有效?

    由于我有一些 JavaScript CSS 规则 我不能只包装这两个divs 放在表单标签中并完成它 所以 我想知道下面的 HTML 是否被认为是有效的 div div
  • 如何将字符串发送到终端而不需要将其作为标准命令?

    我正在用Java编写一个程序 需要使用终端命令才能工作 我的功能基本上是这样的 public void sendLoginCommand throws IOException System out println n Sending Log
  • 在 Ubuntu 12 上安装最新版本的 R?

    我在 Ubuntu 机器上安装 R 时遇到问题 每当我尝试安装软件包时 都会出现错误 package xyz is not available for R version 2 14 1 我尝试通过终端本身安装 R 但无法升级 有没有办法 我
  • Android Things:连接到串行调试控制台

    我一直在尝试连接到串行控制台树莓派 3 with 安卓事物 using USB to TTL cable从我的Linux Ubuntu 机器 尽管我按照文档连接了电缆 但执行时我得到的只是minicom命令如下 with 没有机会输入任何字
  • 在 React hook 上使用 props 值有什么不好吗?

    我是反应钩子的新手 我只是在文档中没有看到这一点 const MyComponent myProp gt const myPropHook setPropHook useState myProp 我想知道这是否是一个好的做法 您传递给的值u
  • CSS中的margin和padding有什么区别?

    有什么区别margin and padding在CSS中 什么时候应该使用其中之一 padding 和 margin 之间最大的区别是垂直边距会自动折叠 而 padding 不会 考虑两个元素一个在另一个之上 每个元素的填充为1em 该填充
  • CodeIgniter 路由 - 仅从一个类的 URL 中删除类名

    我想重新映射这个 index php pages services进入这个index php services 我该怎么做 我尝试过这个 但它不起作用 route any pages 更新 这种方法有动态方法吗 因此 该类中的每个函数都将重
  • UITextView 不调用 ShouldChangeTextInRange

    我使用自定义 UITextView 并需要在返回单击时隐藏键盘 我需要捕获具有文本视图的 ShouldChangeTextInRange 我不知道为什么 但是 方法未被调用 这是我的文本视图的代码 public class Placehol
  • 在 Android 中启用当前禁用的 Spinner

    我在 Android 上闲逛 而我的 Java 知识充其量是有限的 例如 我对它允许内联类这一事实感到困惑 我的问题如下 我有一个布局 其中有三个下拉菜单 我在 onCreate 中初始化了所有三个 第一个从字符串数组中获取值 然而 第二个
  • R - 使用 ggplot2 和栅格包的地理参考栅格图像的原始颜色

    我想使用原来的colortable of a gt gt 地理参考光栅图像 tif 文件 作为彩色比例在 ggplot ggplot2 绘制的地图中 由于找不到更简单的解决方案 我访问了colortable 槽从legend 加载的光栅图像
  • 使用Boost读写XML文件

    有没有什么好的方法 也是一个简单的方法 使用Boost来读写XML文件 我似乎找不到任何使用 Boost 读取 XML 文件的简单示例 您能给我指一个使用 Boost 读写 XML 文件的简单示例吗 如果不是 Boost 有什么好的 简单的