TinyXML を使用して、XML ファイル (固定形式) を取得し、解析して、protobuf オブジェクトに要素を設定する短いコンバーターを実装しようとしています。問題は、一部の要素が protobuf 定義でオプションであり、TinyXML がスキーマをサポートしていないことです。
必須/オプションの違いを考慮して、要素を堅牢に解析する簡単な方法は何でしょうか。すべての要素を a に貼り付けてstd::mapからチェックする必要がありますか?
XML の例は次のようになります。
<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>
対応するプロト定義
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;
}