0

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;  
}
4

1 に答える 1

1

IsInitialized()またはCheckInitialized()メソッドは、すべての必須フィールドが設定されているかどうかを教えてくれるようです。

http://code.google.com/apis/protocolbuffers/docs/reference/cpp/google.protobuf.message.html#Message.IsInitialized

于 2010-10-17T20:48:58.990 に答える