2010-12-02 4 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 경우 당신은 또한 확인할 수 있습니다 : 그것은 두 가지 방법이 있습니다 나타나지만 정의되지 않은 사용 검사가 바람직 보인다

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 thanks – Patrick

10

. 노드가 존재하는 경우

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

또는

if (item.image != undefined) 

그러나 조심

,이 관계없이 항상 true로 평가합니다.

if (item.image) 

미정의 체크를 고려하면 이상한 점이 있습니다.

관련 문제