使用 boost 解析 XML

parsing xml using boost

本文关键字:XML 解析 boost 使用      更新时间:2023-10-16

我正在尝试解析第一个标签为roottagXML,但是当我执行下面的代码时,它总是会捕获段。不知道我做错了什么BOOST_FOREACH.

我得到的输出如下所示:

entered in loop
In catch

更新:

我打印了boost property tree阅读read_xml它显示我为

<?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(); }

代码很好。

科里鲁现场观看

印刷:

 entered in loop
 entered in loop 2
 entered in loop 2
 entered in loop 2
 entered in loop 2