c ++ boost xml parser ptree.get函数 - 不接受节点名

时间:2015-09-21 08:03:52

标签: c++ xml boost

尝试使用c ++ ..使用boost xml解析器从xml文件中获取内容。

opencv.xml

<opencv_storage>
     <labels type_id="opencv-matrix">
          <data>0 0 0 0 1 1 0 0</data>
     </labels>
</opencv_storage>

C ++代码段

using boost::property_tree::ptree;
    ptree pt;
    boost::property_tree::read_xml("opencv.xml", pt);

    std::string m_file = pt.get<std::string>("opencv_storage.labels type_id=\"opencv-matrix\".data");

    std::cout<<"m_file "<<m_file<<std::endl;

执行时,程序抛出异常:

No such node (opencv_storage.labels type_id="opencv-matrix".data)

我怀疑,标签与type_id

之间存在空格

在此先感谢,任何帮助都会受到赞赏,因为我正在努力适应提升。

1 个答案:

答案 0 :(得分:1)

当然不是。元素名称中的空格在XML中是非法的。

您真正想要的是属性:Parsing XML Attributes with Boost

或者,更好的是,您希望在此处使用XML解析器:What XML parser should I use in C++?

如果你想以某种方式使用poperty tree(你确定吗?),请看这里:

枚举路径函数显然可以用于XML,因为它需要ptree