2016-06-29 128 views
1

我想解析包含特定屬性的節點的隨機xml文件,並檢索此屬性的所有值。用例是有許多具有不同節點的XML,但要檢索的屬性始終是已知的。C++ Boost循環通過未知的ptree和屬性列表值

下面是一個文件的例子:

<node> 
<container> 
    <object attribute="value" /> 
    <object attribute="value" /> 
<container/> 
<supercontainer> 
    <subcontainer> 
    <otherobject attribute="value" /> 
    <subcontainer/> 
<supercontainer/> 
</node> 

這是我現在使用升壓property_tree但我不知道該怎麼在循環做:

ptree pt; 
read_xml(xml_file, pt); 
BOOST_FOREACH(boost::property_tree::ptree::value_type &ele, pt) 
{ 
    //NO IDEA 
} 

思路歡迎。

感謝

回答

0

OK,我解決它使用下列內容:

void recurseManifest(ptree &pt, int lvl) 
{ 
    for (ptree::iterator current = pt.begin(); current != pt.end();) 
    { 
    try 
    { 
     std::cout << current->second.get<std::string>("<xmlattr>.attribute") << std::endl; 
    } 
    catch(const boost::property_tree::ptree_bad_path &err) 
    { 
     std::cerr << err.what() << std::endl;  
    } 
    assets = recurseManifest(current->second, lvl++); 
    ++current; 
    } 
}