2010-12-02 27 views
8

この構造の要素が各子に存在するかどうかをチェックしたいと思います。問題は、子供たちが同じ名前(製品、プレパック)を持っておらず、注文を変更したくないということです。また、XML構造を変更することはできません。as3 xml要素が存在するかどうかをチェック

<items> 
    <product> 
     <resourceImages> 
      <image /> 
     </resourceImages> 
    </product> 
    <product> 
     <resourceImages> 
      <image /> 
     </resourceImages> 
    </product> 
    <prepack> 
     <resourceImages /> 
    </prepack> 
    <product> 
     <resourceImages> 
      <image /> 
     </resourceImages> 
    </product> 
    <prepack> 
     <resourceImages /> 
    </prepack> 
</items> 
+1

どの要素ですか?たぶん、あなたが達成したいと思うものの例が良いでしょう。 – Patrick

答えて

7

このようにしますか?

for each(var item : XML in xmlData.children()) 
{ 
    var hasImages : Boolean = (item.resourceImages.children().length() > 0); 

    if(hasImages) 
     trace("item has images") 
} 
+0

私は例を変更しました。これらのチェックをforループで実行する必要があります。あなたは例を挙げることができますか? – chchrist

+0

どの要素をチェックしますか?画像? – Mattias

+0

はいイメージ要素が存在する場合、forループをチェックインする必要があります。しかし、私は長さ()を見つける方法がわからない – chchrist

6

はあなたの最初のループであるかにも依存しますが、ノードがないundefinedであれば、あなたもチェックすることができます。これは、2つの方法があります表示されますが、未定義使用してチェックが望ましいと思われる

var xml:XML=<items> 
    <product> 
     <resourceImages> 
      <image /> 
     </resourceImages> 
    </product> 
    <product> 
     <resourceImages> 
      <image /> 
     </resourceImages> 
    </product> 
    <prepack> 
     <resourceImages /> 
    </prepack> 
    <product> 
     <resourceImages> 
      <image /> 
      <image /> 
     </resourceImages> 
    </product> 
    <prepack> 
     <resourceImages /> 
    </prepack> 
</items>; 

//loop on all all resourceImage node 
for each (var resourceImageXML:XML in xml..resourceImages){ 
    // and check if node if defined 
    if (resourceImageXML.image != undefined) { 
     // ok node have image 
    } 
} 
+1

xml..resourceImagesの使用のためのUpvote :-) –

+0

@Tim Keatingありがとう – Patrick

10

if (item.image.length() > 0) 

OR

if (item.image != undefined) 

しかし、注意してくださいノードが存在する場合、これは関係なく、常にtrueに評価されます。

if (item.image) 

未定義のチェックを考慮すると変です。

関連する問題