2016-02-18 4 views
0

Я пытаюсь разобрать XML с первым тегом как roottag, но когда я выполняю приведенный ниже код, он всегда будет захватывать сегмент. Не уверен, что я делаю неправильно с BOOST_FOREACH.синтаксический анализ xml с использованием boost

Выход я показано ниже:

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> 

ответ

1

Почему бы не поймать исключение и посмотреть, что это проблема?

catch(boost::property_tree::ptree_error & e){ std::cout<< "Error is:" << e.what(); }

0

Код отлично.

Посмотреть Live On Coliru

Печать:

entered in loop 
entered in loop 2 
entered in loop 2 
entered in loop 2 
entered in loop 2 
+0

он работает с XML кодирования UTF-8, а? – Namitha

+0

это может быть проблема с кодировкой xml? – Namitha

+0

Да. И да. На оба вопроса – sehe

Смежные вопросы