2009-04-15 71 views
1

我想访问一个XMLList项目并将其转换为XML对象。如何判断E4X表达式是否匹配?

我使用这个表达式:

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); 
        } 

但它仍然给我一个错误,如果世界上没有匹配。如果有匹配,它工作正常。

谢谢!

回答

1

以我的经验,检查结果最简单的方法就是抓住列表中的第0个元素,看看它是否是null

以下是您的代码示例,并进行了一些调整。请注意,我已将defaultItem的类型从XMLList更改为XML,并将其分配给列表中的第0个元素。

var defaultItem:XML = 
    DataModel.instance.masonicXML.item.(@style_number == styleNum)[0]; 
if(defaultItem != null) 
{ 
    DataModel.instance.selectedItem = defaultItem; 
} 
0

马特的空检查是一个很好的解决方案。 (除非在XMLList中可能有空项目,可能不是,但我没有验证过这一点。)

您还可以检查XMLList的长度而不将其转换为字符串:

if ([email protected]_number.length() > 0) 

与String和Array的不同之处在于,对于XMLList,length()是一种方法而不是属性。

相关问题