我正在尝试将第一个标记为 roottag
的 XML
解析出来,但是当我执行下面的代码时,它总是会捕获段。不确定我对 BOOST_FOREACH
做错了什么。
我得到的输出如下所示:
entered in loop
In catch
更新:
我打印了由 read_xml
读取的 boost property tree
它显示为
<?xml version="1.0" encoding="utf-8"?>
and the error I got is no such node
代码:
boost::property_tree::ptree pt1;
boost::property_tree::read_xml( "/home/user/test.xml", pt1 );
try{
std::cout<<"\n entered in loop";
BOOST_FOREACH(boost::property_tree::ptree::value_type & node, pt1.get_child("roottag"))
{
std::cout<<"\n entered in loop 2";
//copy data
}
}
catch(...){
std::cout<<"\n In catch";
}
xml文件:
<?xml version="1.0" encoding="utf-8"?>
<roottag>
<shipTo country="US">
<name>Alice Smith</name>
<street>123 Maple Street</street>
<city>Mill Valley</city>
<state>CA</state>
<zip>90952</zip>
</shipTo>
<billTo country="US">
<name>Robert Smith</name>
<street>8 Oak Avenue</street>
<city>Old Town</city>
<state>PA</state>
<zip>95819</zip>
</billTo>
<comment>Hurry, my lawn is going wild!</comment>
<items>
<item partNum="872-AA">
<productName>Lawnmower</productName>
<quantity>1</quantity>
<USPrice>148.95</USPrice>
<comment>Confirm this is electric</comment>
</item>
<item partNum="926-AA">
<productName>Baby Monitor</productName>
<quantity>1</quantity>
<USPrice>39.98</USPrice>
<shipDate>1999-05-21</shipDate>
</item>
</items>
</roottag>
最佳答案
为什么不捕获异常并查看问题所在?
catch(boost::property_tree::ptree_error & e){
std::cout<< "Error is:" << e.what();
}
关于c++ - 使用 boost 解析 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35483114/