如何获取节点的名称?
Posted
技术标签:
【中文标题】如何获取节点的名称?【英文标题】:How can I get the name of a node? 【发布时间】:2014-03-27 15:24:04 【问题描述】:有没有办法获取节点的名称?例如:
Fruits:
- apple
- orange
- pear
在 C++ 中:
YAML::Node fruit = parser["Fruits"];
cout << fruit.name() << endl; // should print "Fruits"
有没有类似 YAML::Node::name() 的东西?我在 Node.h 中没有看到任何符合要求的内容。
如果没有,关于修改代码以记录此信息的简单方法有什么建议吗?
谢谢!
【问题讨论】:
【参考方案1】:您真正要寻找的是与地图中的值关联的键。你是对的,没有从一个值返回到它的键的链接,但是当你首先导航节点时,你可以存储一个。
如果你所有的键都是字符串键,那么每当你将值传递给某个函数时,也只需传递字符串键:
// Instead of:
doSomething(node[key]);
// Call:
doSomething(key, node[key]);
【讨论】:
如果解析器能够将这些信息嵌入其中,这样用户代码就不必跟踪层次结构来进行错误捕获。 如果解析器不保留此信息,那么我必须将大多数 YAML 调用嵌入到 try/catch 块中,并使用我自己的错误处理或其他类似的侵入性错误捕获。这给用户代码增加了很多开销。 如果您觉得这很重要,请在项目主页上提交功能请求。【参考方案2】:Fruits:
- apple
- orange
- pear
这是一个键值对
“水果”是关键
" -苹果 -橙 -pear " 是值
YAML::Node fruit = parser["Fruits"];
该命令使用一个键查询值 所以节点“fruit”只是保存关于值的信息。
【讨论】:
以上是关于如何获取节点的名称?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SchemaTypeRegistry 和 SchemaManager 从前缀和节点名称中获取类定义?
如何使用 xpath/php 获取 xml 文件中的节点名称?
如何在 Eclipse Milo 中获取 OPC UA 节点名称?