Parsing 在TinyXML中要求存在不带模式的XML元素

Parsing 在TinyXML中要求存在不带模式的XML元素,parsing,protocol-buffers,tinyxml,Parsing,Protocol Buffers,Tinyxml,我正在尝试使用TinyXML实现一个短转换器,它将获取一个XML文件(具有固定格式),解析它,并用元素填充protobuf对象。问题是,protobuf定义中的某些元素是可选的,TinyXML不支持模式 考虑到所需/可选的差异,哪种简单的方法能够可靠地解析元素。我是否应该将所有元素粘贴到std::map中,然后进行检查 一个例子是XML <box> <id>495</bin_id> <region> <vertices>

我正在尝试使用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>

看起来
IsInitialized()
CheckInitialized()
方法将告诉您是否已设置所有必需的字段

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