2010-12-02 14 views
8

Quiero comprobar si el elemento en esta estructura existe para cada hijo. El problema es que los niños no tienen el mismo nombre (producto, prepack) y no quiero cambiar el orden. Además, no puedo cambiar la estructura XML.as3 xml comprobar si el elemento 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

¿Qué elemento? Quizás un ejemplo de lo que quiere lograr será mejor – Patrick

Respuesta

7

como esta?

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

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

He cambiado el ejemplo. Necesito ejecutar estas verificaciones en un bucle for. ¿Puede dar un ejemplo? – chchrist

+0

¿Qué elemento quieres verificar? ¿Imagen? – Mattias

+0

sí Necesito registrar un bucle for si el elemento de la imagen existe. Pero no sé cómo encontrar la longitud() – chchrist

6

depende también de cómo es su primer bucle, pero también se puede comprobar si el nodo no es 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

Votación por el uso de xml..resourceImages :-) –

+0

@Tim Keating gracias – Patrick

10

Parece que hay dos maneras, pero parece preferible usar el cheque no definido.

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

O

if (item.image != undefined) 

Pero cuidado, esto siempre se evalúa como verdadera sin importar si existe el nodo.

if (item.image) 

Cuál es extraño teniendo en cuenta el cheque indefinido.

Cuestiones relacionadas