Boost 属性树和 Xml 解析问题

2023-11-21

我在用着boost::property_tree。该文档非常模糊,总体来说在大多数情况下没有帮助。查看源代码/示例也没有多大帮助。

我想知道的是以下内容:

<VGHL>
    <StringTable>
        <Language>EN</Language>
        <DataPath>..\\Data\\Resources\\Strings\\stringtable.bst</DataPath>
    </StringTable>
</VGHL>

如何迭代当前级别的所有元素?如果我这样做:

read_xml(fin, bifPropTree);
VGHL::String tablePath;
BOOST_FOREACH(boost::property_tree::wiptree::value_type &v, 
              bifPropTree.get_child(L"VGHL.StringTable"))
{
    m_StringTable->ParseEntry(v.second, tablePath);
}

In ParseEntry我试试这个:

VGHL::String langName = stringTree.get<VGHL::String>(L"StringTable.Language");

导致异常(不是不存在)。我也尝试过这个:

VGHL::String langName = stringTree.get<VGHL::String>(L"Language");

同样的问题。

根据我打电话时的理解ParseEntry我正在传递对该节点处的树的引用。

当我有多个条目时,有什么办法可以处理这个问题StringTable使用属性树?


ParseEntry 接收对当前级别的每个子节点的引用。因此,您不能使用节点名称询问值,因为您已经有一个子节点。节点名称存储在v.first.

您可以使用以下命令迭代给定级别的所有元素获取子对象选择级别,然后BOOST_FOREACH迭代。每个迭代器都是一对代表节点名称和节点数据的:

using boost::property_tree::wiptree;

wiptree &iterationLevel = bifPropTree.get_child(L"VGHL.StringTable");
BOOST_FOREACH(wiptree::value_type &v, iterationLevel)
{   
  wstring name = v.first;
  wstring value = v.second.get<wstring>(L"");
  wcout << L"Name: " << name << L", Value: " << value.c_str() << endl;
}

该代码将打印:

名称:语言,值:EN

名称:DataPath,值:..\\Data\\Resources\\Strings\\stringtable.bst

如果不想迭代,可以选择节点级别,然后使用名称查找节点:

wiptree &iterationLevel = bifPropTree.get_child(L"VGHL.StringTable");
wstring valueLang = iterationLevel.get<wstring>(L"Language");
wstring valuePath = iterationLevel.get<wstring>(L"DataPath");
wcout << valueLang << endl << valuePath << endl;

该代码将打印:

EN

..\\Data\\Resources\\Strings\\stringtable.bst

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

Boost 属性树和 Xml 解析问题 的相关文章

  • ASP Core HttpClientFactory 模式使用客户端证书

    任何人都知道在使用时如何使用客户端证书HttpClientFactory 在我发现的所有示例中 您需要提供HttpMessageHandler in the HttpClient构造函数 使用时不可用HttpClientFactory se
  • 如何在 C# 中知道 PID 和 VID 来发现虚拟 COM 端口名称

    如果我知道 PID 和 VID 我会尝试找到查找 COM 端口名称的正确方法 到目前为止 我写了解决方法 但我不相信没有更优雅和正确的方法 顺便说一句 我知道我可以使用 REGEX 编写此代码只是为了测试解决方法 我知道还有很大的改进空间
  • 从 C 中的 char* 获取单个字符

    有没有办法在 C 中逐字符遍历或从 char 中提取单个字符 考虑以下代码 现在获得单个角色的最佳方式是什么 建议我一种不使用任何字符串函数的方法 char a STRING 其他方式 char i for i a i i i points
  • 在 C# 中轻松创建支持索引的属性

    在 C 中我发现索引属性 http msdn microsoft com en us library aa288464 VS 71 aspx非常有用 例如 var myObj new MyClass myObj 42 hello Conso
  • C++ 和序列化:有什么方法可以进行某种内省吗?

    我读过一些例子维基百科 http en wikipedia org wiki Type introspection C 2B 2B但我正在寻找一些现实生活中的例子 如何使用内省 为什么 它有助于编写干净的代码 以及代码本身 例如 有没有办法
  • C# 并行与并行线程代码性能

    我一直在测试 System Threading Parallel 与线程的性能 我很惊讶地发现并行比线程花费更长的时间来完成任务 我确信这是由于我对并行的了解有限 我刚刚开始阅读 我想我会分享一些片段 如果有人可以向我指出并行代码比线程代码
  • WPF Dispatchertimer 延迟反应/冻结

    在我的 WPF 应用程序中 我使用 3 个不同的 DispatcherTimers 一种是用于显示当前时间 一种是每 5 秒运行一次数据库查询 第三个每 1 秒刷新一次自定义按钮的值 当我的程序运行时 有很多延迟 冻结 例如 时间开始正确计
  • 在目标 VS 安装时,VSIX 扩展内部使用的 WPF-Log4Net 未输出日志

    当 Log4net 在 VSIX 扩展中使用并安装在另一个目标 VS 上时 它不会记录日志 我有一个 WPF 解决方案 我下载了 log4net dll 添加了 log4net config 并将 复制到输出目录 值设置为 始终复制 log
  • 试图使用加密来混淆我的项目打破了它

    我试图尝试不同的混淆选项 为了做到这一点 我首先尝试了加密货币 以下是我遵循的步骤 打开加密向导并选择一些选项 选择我的解决方案文件 完成向导后 我看到有些 Dll 被很好地混淆了 但我的项目现在无法构建 我注意到的两件事是 我的文件夹中有
  • 如何删除实体框架6中的多对多关系

    如果将项目连接为多对多关系 则从数据库中删除项目时会出现问题 我的数据库看起来像 Project lt JobInProject gt Job ProjectID JobInProjectID JobID ProjectID JobID 主
  • EF Core 一对多关系列表返回 null

    我正在尝试学习如何在 EF Core 中正确利用 DbContext 我有一个团队课程 public class Team public int ID get set public string Name get set public bo
  • ASP.NET中如何访问除wwwroot以外的位置

    我可以使用访问服务器的物理位置Server MapPath 这给了我内部的物理路径wwwroot文件夹 我想将一些数据保存到同一服务器的另一个驱动器中D 驾驶 我想我无法获取以下位置的物理位置D 驾驶使用Server MapPath因为它位
  • 如何从Web JavaScript应用程序获取桌面C#程序中的变量

    我遇到一个问题 有两个应用程序 一种是 C 中的桌面应用程序 另一种是 javascript 中的 Web 应用程序 运行桌面应用程序中的一些变量或信息需要传输到Web应用程序 有谁知道如何解决这个问题 有人愿意提供更多细节来解决这个问题吗
  • 修改正在运行的可执行文件的资源内容

    All 我将应用程序设置存储在资源中 当我的程序首次加载时 我使用 WinAPI 读取指定的资源 然后我解析检索到的字节数据 这对我来说完美无缺 现在假设用户更改了我的应用程序中的设置 他 她检查复选框控件 我想将更新的设置保存到我的资源中
  • 我可以在 C++ 中重写非虚函数吗

    我想知道我可以重写 C 中的非虚函数吗 因为我在使用 C 时发现了这个问题override关键字我的代码如下 class A public void say cout lt lt From A n class B public A publ
  • 三种 System.Drawing 方法表现出缓慢的绘制或闪烁:解决方案?或其他选择?

    我正在通过 System Drawing 进行一些绘图 但遇到了一些问题 我将数据保存在队列中 并将该数据绘制 绘制 到三个图片框中 此方法填充图片框 然后滚动图形 所以不要在以前的绘图上绘制 并且逐渐看起来更混乱 我找到了两种绘制图表的解
  • 除空字符串外的任何内容的正则表达式

    是否可以使用正则表达式来检测任何不是 空字符串 的内容 如下所示 string s1 string s2 string s3 string s4 etc 我知道我可以使用修剪等 但我想使用正则表达式 s 将匹配任何包含至少一个非空格字符的字
  • 如何使用 ProtoGen 从 proto 文件生成结构

    我们一直在使用 protobuf net ProtoGen 从 proto 文件生成 C cs 文件 我们希望代替类来生成结构 例如 DataContract public struct Entity1 ProtoMember 1 publ
  • 使用 _Alignas 进行结构成员对齐

    我想知道以下问题 是新的吗 Alignas结盟 C11 中的说明符适用于结构成员吗 我一直假设这么多 但彻底阅读了 N1570 公开草案似乎表明对齐说明符不能 出现在一个说明符限定符列表 这就是我所期望的 如果得到支持的话 我已经读过几遍语
  • 返回 ICollection 而不是 List 的真正优势是什么? [复制]

    这个问题在这里已经有答案了 我读过几篇博客文章 提到对于公共 API 我们应该始终返回 ICollection 或 IEnumerable 而不是 List 返回 ICollection 而不是 List 的真正优势是什么 Thanks 复

随机推荐

  • Windows 8 - 在代码隐藏中对自定义属性进行动画处理

    基本上 我想制作一堆形状并使它们动画化 所以我想出了以下自定义类 public class FunkyShape DependencyObject public double Animator get return double GetVa
  • Apache Camel 中已弃用的 XmlJsonDataFormat 的替代方案

    在 Apache Camel 中 我尝试使用 XmlJsonDataFormat 进行从 XML 到 JSON 的快速转换 然而 XMLJSON http camel apache org xmljson html 已弃用 因此我不确定除了
  • 操作栏选项卡未填充选项卡栏

    After hours of trying I finally found a method to separate the actionbar tabbar from the actionbar manualy actionbar con
  • 隐藏径向刻度标签 matplotlib

    我正在尝试用以下代码绘制极坐标图 import numpy as np import matplotlib pylab as plt def power angle l lam return 1 lam np cos np pi l np
  • Angular2 - ngx-剪贴板不工作

    我按照中所述安装了 ngx clipboard文档并将 js 也包含在 systemjs config 中 但是我收到以下错误 Unhandled Promise rejection Template parse errors Can t
  • 使用 NSubstitute 模拟通用方法

    我有一个带有许多通用方法的接口 这些方法根据传入的数据类型执行操作 如何使用 NSubstitute 模拟它 目前 我不得不使用具体的类而不是模拟 因为我无法处理调用该方法的所有可能类型 public interface IInstance
  • 如何使用我喜欢的 diff 工具/查看器查看“git diff”输出?

    当我打字时git diff 我想使用我选择的视觉差异工具 Windows 上的 SourceGear diffmerge 查看输出 我如何配置 git 来做到这一点 从Git1 6 3开始 您可以使用git difftool 脚本 see
  • 如何以编程方式设置自定义标题栏上的背景颜色渐变?

    有很多关于实现自定义标题栏的教程和问题 但是 在我的自定义标题栏中 我有一个自定义背景渐变 我想知道如何在我的代码中动态设置它 这是我的自定义标题栏被调用的地方 requestWindowFeature Window FEATURE CUS
  • 使用 Jade 显示输入值内的数据

    我对 Jade 相当陌生 想要显示一些输出的数据value文本的价值input 像这样 input type text name date value THISRIGHTHURR 但只需要值viewpost date 我尝试了多种方法 但似
  • ValueError:sklearn.RFECV 中不支持未知[重复]

    这个问题在这里已经有答案了 我试图使用 rfecv 缩小与我的分类器真正相关的特征数量 这是我写的代码 import sklearn import pandas as p import numpy as np import scipy as
  • 将十六进制颜色代码转换为颜色名称

    如何将颜色的十六进制表示形式转换为其相应的名称 例如 考虑以下颜色 rainbow 4 FF0000FF 80FF00FF 00FFFFFF 8000FFFF 他们的名字是什么 希望每个代码都有一个名字 我发现了这个功能col2rgb 但它
  • 如何在 Objective-C 中转发类方法?

    在 Objective C 中 我知道你可以将选择器从一个实例转发到另一个实例 id forwardingTargetForSelector SEL aSelector 我怎样才能将类方法转发到另一个类 resolveClassMethod
  • 下载 YouTube 视频? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想以编程方式下载 youtube 视频 使用 Java 我如何将 youtube 视频链接转换为可下载的 URL 浏览器使用以下代码播放 YouT
  • Android:当我为 ListView 设置 OnClickListener 时

    lv setOnClickListener new OnClickListener public void onClick View v Does v参考ListViewlv或列表中选择的特定项目 我相信v指的是整体ListView 要为项
  • 桥接转换:__bridge_transfer 与带有合成 setter 的 __bridge

    我正在使用 ARC 并且在使用时遇到困惑 bridge transfer 我有一处房产userName如下 property nonatomic retain NSString userName synthesize userName us
  • 查找未排序数组的中位数

    为了找到未排序数组的中位数 我们可以在 O nlogn 时间内为 n 个元素创建一个最小堆 然后我们可以逐个提取 n 2 个元素以获得中位数 但这种方法需要 O nlogn 时间 我们可以通过某种方法在 O n 时间内完成同样的事情吗 如果
  • .NET Framework 3.5 和 TLS 1.2

    我目前有一个使用 NET 3 5 框架的 Web 应用程序 我想知道它是否与 TLS 1 2 兼容 我们的代码中没有任何地方指定 TLS 版本 这是一个遗留应用程序 目前无法重新编译 我没有找到太多关于是否可以或不可以的信息 但我的印象是兼
  • MySQL,长文本、文本还是 blob 哪个更有效?提高插入效率

    我正在将大量数据从多个数据库迁移到一个数据库中 作为中间步骤 我将数据复制到每种数据类型和源数据库的文件中 然后将其复制到新数据库中的一个大表中 新表中的结构很简单 称为 migrate data 它由 id 主键 type id 在数据类
  • 异常:无法从 START_OBJECT 标记中反序列化 java.util.ArrayList 的实例

    我试图显示来自网络服务的数据并收到此错误 线程 main 中出现异常 com fasterxml jackson databind JsonMappingException 无法从 START OBJECT 令牌中反序列化 java uti
  • Boost 属性树和 Xml 解析问题

    我在用着boost property tree 该文档非常模糊 总体来说在大多数情况下没有帮助 查看源代码 示例也没有多大帮助 我想知道的是以下内容