c++ - 使用 boost 解析 xml

标签 c++ xml boost

我正在尝试将第一个标记为 roottagXML 解析出来,但是当我执行下面的代码时,它总是会捕获段。不确定我对 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/

相关文章:

c++ - boost Spirit istream 迭代器给出误报

C++ cpp-net lib 未找到

c++ - 模拟线程局部变量

c++ - 如何将一个项目的构建文件复制到第二个项目的 include/library 目录?

python - lxml内存问题

c++ - boost ptime : how to format data in a way browsers send inside headers of http requests?

c++ - 如何检测单个文件的文件系统大小限制

c++ - 通过显式调用其析构函数和构造函数来重新创建对象

java - 一对多关联 "org.hibernate.InvalidMappingException: Could not parse mapping document from input stream"

mysql - MongoDB存储以及MySQL XPath功能