Требование существования элементов XML без схемы в TinyXML - PullRequest
0 голосов
/ 13 октября 2010

Я пытаюсь реализовать короткий конвертер с использованием TinyXML, который будет принимать XML-файл (с фиксированным форматом), анализировать его и заполнять объект protobuf элементами.Проблема в том, что некоторые элементы являются необязательными в определении protobuf, и TinyXML не имеет поддержки схемы.

Какой был бы простой способ надежного анализа элементов с учетом требуемой / необязательной разницы.Должен ли я вставить все элементы в 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;  
}

1 Ответ

1 голос
/ 18 октября 2010

Похоже, что методы IsInitialized() или CheckInitialized() сообщат вам, были ли установлены все обязательные поля.

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

...