0

HTTPService 呼び出しの resultHandler で、繰り返しノードを arrayCollection に割り当てました。その繰り返しノード内には、繰り返される場合と繰り返されない場合がある他のノードがあります。たとえば、ここではoptionノードがoptions内で繰り返されます。

<response> 
   <options>
      <option> <var1> part1 </var1> <var2> part2 </var2> </option>
      <option> <var1> part1 </var1> <var2> part2 </var2> </option>
   </options>
   <options>....
</response>

そして、このように繰り返さないこともあります。

 <response> 
       <options>
          <option> <var1> part1 </var1> <var2> part2 </var2> </option>
       </options>
       <options>....
 </response>

for ループで actionscript エラーが発生しています。両方のケースをどのように説明しますか?

オブジェクトを値オブジェクトに割り当てる for ループは次のとおりです。

protected function xml_resultHandler(event:ResultEvent):void
  {
  var data:ArrayCollection = xml.lastResult.response.option;
  var valueobjects:valueObject;

  for each (var characteristic:Object in data)
   {
                        valueobject = new valueobject;
                        valueobject.var1 = characteristic.option[0].var1;
                        valueobject.var2 = characteristic.option.var2;
                        datamodel.addItem(valueobject);
                    }

}

このサンプル コードでは、複数のオプション ノードがない場合は var1 を割り当てると壊れ、複数のオブジェクト ノードがある場合は var2 が壊れます。私はそれをバラバラにして、それらを別々に繰り返すことができますが、もっと雄弁な解決策はありますか?

4

1 に答える 1

0

これでいいのかな

protected function xml_resultHandler(event:ResultEvent):void
{
    var data:ArrayCollection = xml.lastResult.response.option;
    var valueobjects:valueObject;

    for each (var characteristic:Object in data)
    {
                    valueobject = new valueobject;
                    if(characteristic.option is ArrayCollection)
                        valueobject.var1 = characteristic.option[0].var1;
                    else
                        valueobject.var2 = characteristic.option.var2;
                    datamodel.addItem(valueobject);
    }
}

データに1行または複数行が含まれるかどうかわからない結果ハンドラーにこれと非常によく似たものを使用しましたが、E4X解析にドット演算子を使用するとオブジェクトが返されるようですまたは、多重度に応じて配列コレクション。

于 2011-01-27T22:41:54.053 に答える