2010-10-13 25 views
0

J'essaye d'implémenter un convertisseur court utilisant TinyXML qui prendra un fichier XML (avec un format fixe), l'analysera, et remplira un objet protobuf avec les éléments. Le problème est que certains éléments sont facultatifs dans la définition de protobuf et TinyXML n'a pas de support de schéma.Exiger l'existence d'éléments XML sans schéma dans TinyXML

Ce serait une manière simple d'analyser les éléments de manière robuste en tenant compte de la différence requise/optionnelle. Dois-je coller tous les éléments dans un std::map puis vérifier?

Un XML exemple serait

<box> 
    <id>495</bin_id> 
    <region> 
    <vertices> 
     <x>233</x> 
     <y>208</y> 
    </vertices> 
    <vertices> 
     <x>233</x> 
     <y>188</y> 
    </vertices> 
    <vertices> 
     <x>253</x> 
     <y>188</y> 
    </vertices> 
    <vertices> 
     <x>253</x> 
     <y>208</y> 
    </vertices> 
    </region> 
    <type>Pencils</type> 
    <color>GREEN</color> 
    <deplete_level_thr>0.2</deplete_level_thr> 
    <replenish_level_thr>0.8</replenish_level_thr> 
<box> 

avec la définition de proto correspondant

message ProduceBin { 
    required int64 id = 1;    
    required system.messaging.Polygon region = 2; 
    optional string type = 3;  
    optional string color = 4;    
    optional double deplete_level_thr = 6;  
    optional double replenish_level_thr = 7; 
} 

Répondre