Analyse de fichier XML avec Boost C ++

Je dois parsingr un fichier xml en utilisant boost c ++, j’ai écrit un code de test qui fonctionne pour ce xml. a.xml

   abc def ghi   

La sortie arrive

 abc def ghi 

mais pour ce fichier a.xml , mon code de test a.xml aucune sortie, 3 lignes vierges viennent en sortie.

        

voici le code de test:

 #include  #include  #include  #include  int main() { using boost::property_tree::ptree; ptree pt; read_xml("a.xml",pt); BOOST_FOREACH(ptree::value_type &v, pt.get_child("a.modules")) std::cout<<v.second.data()<<std::endl; return 0; } 

Mon problème est que je reçois un gros fichier XML qui contient le mélange de motifs des deux fichiers et que je dois l’parsingr. Le fichier est b.xml et je dois obtenir une sous-étiquette de message de chaque balise.

                                              

et la sortie devrait être:

 092374NMKLA90U345N09832LJKN0A9845JHKLASDF09U8426LJAKLJDGF09845U6KLJSDGP89U45LJSDFP9GU4569078LJK 092374NMKLA90U345N09832LJKN0A9845JHKLASDF09U8426LJAKLJDGF09845U6KLJSDGP89U45LJSDFP9GU4569078LJK 092374NMKLA90U345N09832LJKN0A9845JHKLASDF09U8426LJAKLJDGF09845U6KLJSDGP89U45LJSDFP9GU4569078LJK 

Je vous remercie

Cordialement

    Boost Documentation :

    Les atsortingbuts d’un élément XML sont stockés dans la sous-clé. Il y a un nœud enfant par atsortingbut dans le nœud d’atsortingbut. L’existence du noeud n’est ni garantie ni nécessaire lorsqu’il n’y a pas d’atsortingbut.

      //One way would be this: boost::get("module..value"); 

    Une autre façon (non testée), qui semble être meilleure:

     BOOST_FOREACH(boost::property_tree::ptree::value_type &v, pt.get_child("a.modules")) { std::cout << v.second.get_child(".type").data() << std::endl; std::cout << v.second.get_child(".Reference").data() << std::endl; } 

    Encore une prise d' ici.

     //Parse XML... BOOST_FOREACH(boost::property_tree::ptree::value_type &v, pt.get_child("a.modules")) { const boost::property_tree::ptree &atsortingbutes = v.second.get_child("", boost::property_tree::ptree()); BOOST_FOREACH(const boost::property_tree::ptree::value_type &v, atsortingbutes) { std::cout << v.first.data() << std::endl; std::cout << v.second.data() << std::endl; } }