代码之家  ›  专栏  ›  技术社区  ›  recipriversexclusion

要求TinyXML中存在没有模式的XML元素

  •  0
  • recipriversexclusion  · 技术社区  · 15 年前

    我正在尝试使用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 回复  |  直到 15 年前
        1
  •  1
  •   Joshua Martell    15 年前

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

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