E4X 표현식이 일치하는지 아닌지 어떻게 알 수 있습니까?
-
09-09-2019 - |
문제
xmllist 항목에 액세스하고 AM XML 객체로 변환하려고합니다.
나는이 표현을 사용하고있다 :
masonicXML.item.(@style_number == styleNum)
예를 들어 일치가 있으면 모든 것이 잘 작동하지만 일치하지 않으면 XML로 캐스트 할 때 오류가 잘 형성되어야한다고 말하면 오류가 발생합니다. 따라서 XML로 캐스팅하기 전에 표현이 일치하는지 확인해야합니다. xmllist 변수로 설정하고 다음과 같이 텍스트 () propertie로 확인하는지 확인했습니다.
var defaultItem:XMLList = DataModel.instance.masonicXML.item.(@style_number == styleNum);
if(defaultItem.text())
{
DataModel.instance.selectedItem = XML(defaultItem);
}
그러나 일치하지 않으면 여전히 오류가 발생합니다. 경기가 있으면 잘 작동합니다.
감사해요!
해결책
내 경험상 결과를 확인하는 가장 간단한 방법은 목록의 0 번째 요소를 잡고 그것이 null
.
다음은 몇 가지 조정이있는 코드 샘플입니다. 내가 유형을 변경했음을 주목하십시오 defaultItem
~에서 XMLList
에게 XML
, 그리고 나는 그것을 목록의 0 번째 요소에 할당하고 있습니다.
var defaultItem:XML =
DataModel.instance.masonicXML.item.(@style_number == styleNum)[0];
if( defaultItem != null )
{
DataModel.instance.selectedItem = defaultItem;
}
다른 팁
좋아, 나는 이것으로 일할 수있게되었다 :
if(String(defaultItem.@style_number).length)
Matt 's Null Check는 좋은 솔루션입니다. (xmllist 내에 널 아이템을 가질 가능성이 없다면 .. 아마도 이것을 확인하지는 않았을 것입니다.)
xmllist의 길이를 문자열로 캐스팅하지 않고 확인할 수도 있습니다.
if (defaultItem.@style_number.length() > 0)
문자열과 배열의 차이점은 xmllist를 사용하는 것입니다. length()
속성 대신 방법입니다.
제휴하지 않습니다 StackOverflow