Boost PropertyTree:检查孩子是否存在

新手上路,请多包涵

我正在尝试编写一个 XML 解析器,将 XML 文件解析为 boost::property_tree 并遇到了这个问题。我如何(快速)检查某个属性的孩子是否存在?

显然我可以使用 BOOST_FOREACH 遍历所有孩子 - 但是,没有更好的解决方案吗?

原文由 paul23 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 932
2 个回答
optional< const ptree& > child = node.get_child_optional( "possibly_missing_node" );
if( !child )
{
  // child node is missing
}

原文由 RobH 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 count() 检查标签是否存在

typedef boost::property_tree pt;
pt::ptree tree;
pt::read_xml(filename, tree);

int bodyCount = tree.count( "body" );

if( bodyCount == 0 )
{
  cout<<"Failed : body tag not found"<<endl;
  return -1;
}

原文由 Abdul Wazeed 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题