2010-12-02 7 views
8

Je souhaite vérifier si l'élément de cette structure existe pour chaque enfant. Le problème est que les enfants n'ont pas le même nom (produit, prepack) et je ne veux pas changer l'ordre. De plus, je ne peux pas changer la structure XML.as3 xml vérifier si l'élément existe

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

Quel élément? Peut-être un exemple de ce que vous voulez réaliser sera meilleur – Patrick

Répondre

7

Comme ça?

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

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

J'ai changé l'exemple. J'ai besoin d'exécuter ces vérifications dans une boucle for. Pouvez-vous donner un exemple? – chchrist

+0

Quel élément voulez-vous vérifier? Image? – Mattias

+0

oui Je dois vérifier une boucle for si l'élément image existe. Mais je ne sais pas comment trouver la longueur() – chchrist

6

dépend aussi comment est votre première boucle, mais vous pouvez également vérifier si le nœud n'est pas undefined:

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

Upvote pour l'utilisation de xml..resourceImages :-) –

+0

@Tim Keating merci – Patrick

10

Il semble qu'il ya deux façons, mais le contrôle à l'aide non défini semble préférable.

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

OU

if (item.image != undefined) 

Mais attention, c'est toujours vraie, peu importe si le nœud existe.

if (item.image) 

Ce qui est bizarre compte tenu de la vérification non définie.