ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

<boost> xml文件解析

2021-03-17 15:32:22  阅读:171  来源: 互联网

标签:xml 文件 include paths del 解析 filenum tmp


转载:https://www.cnblogs.com/jiangu66/p/3211956.html
解析对象del.xml如下:

<root>
    <delfile>

        <filenum> 35 </filenum>

        <paths>
            <path> 
                <pathname>/tmp/tmp0/</pathname>
                <before_hours> 0 </before_hours>
            </path>

            <path> 
                <pathname>/tmp/tmp1/</pathname>
                <before_hours> 1 </before_hours>
            </path>

            <path> 
                <pathname>/tmp/tmp2/</pathname>
                <before_hours> 2 </before_hours>
            </path>

            <path> 
                <pathname>/tmp/tmp3/</pathname>
                <before_hours> 3 </before_hours>
            </path>

            <path> 
                <pathname>/tmp/tmp4/</pathname>
                <before_hours> 4 </before_hours>
            </path>
        </paths>

    </delfile>


    <backup>
        <backuptime> 23:59 </backuptime>
    </backup>

</root>

cpp代码如下:

/* del.cpp */
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/typeof/typeof.hpp>
#include <iostream>

using namespace std;

/*       相关的xml参考文件请参考del.conf           */

void ReadConfig()
{
    boost::property_tree::ptree pt;   //定义一个存放xml的容器指针
    boost::property_tree::read_xml("del.xml", pt);   //读入目录下 del.conf文件 入口在pt这个指针
    int filenum = pt.get<int>("root.delfile.filenum"); //将 xml文件中, root节点,下一层delfile 下一层的filenum 作为int类型取出,存在在filenum变量中。

    cout << "filenum: " << filenum << endl;//不注释了 - -

    BOOST_AUTO(child, pt.get_child("root.delfile.paths")); //BOOST_AUTO自动获取表达式, 这里定义个一个节点child指针,并将指针指向 root下一层的delfile的下一层的paths
    for (BOOST_AUTO(pos, child.begin()); pos != child.end(); ++pos)//由于paths节点有多个节点,并且这些节点名称一样,可以用遍历的方法来获取他们,方法见左
    {
        BOOST_AUTO(child_paths, pos->second.get_child("")); //此处不需要填结点名,但引号不能省.这里是获取该节点下所有子节点的意思,子节点获取后放在child_path这个指针
        for (BOOST_AUTO(pos_paths, child_paths.begin()); pos_paths != child_paths.end(); ++pos_paths)
            cout << pos_paths->second.data() << endl;
    }

}
int main()
{
    ReadConfig();
    return 0;
}

编译:

g++ -I/root/boost_1_75_0_build/include del.cpp

执行结果:

filenum: 35
/tmp/tmp0/
 0 
/tmp/tmp1/
 1 
/tmp/tmp2/
 2 
/tmp/tmp3/
 3 
/tmp/tmp4/
 4 

标签:xml,文件,include,paths,del,解析,filenum,tmp
来源: https://www.cnblogs.com/kouei/p/14549618.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有