如何判断E4X表达式是否匹配?
问题描述:
我想访问一个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);
}
但它仍然给我一个错误,如果世界上没有匹配。如果有匹配,它工作正常。
谢谢!
答
以我的经验,检查结果最简单的方法就是抓住列表中的第0个元素,看看它是否是null
。
以下是您的代码示例,并进行了一些调整。请注意,我已将defaultItem
的类型从XMLList
更改为XML
,并将其分配给列表中的第0个元素。
var defaultItem:XML =
DataModel.instance.masonicXML.item.(@style_number == styleNum)[0];
if(defaultItem != null)
{
DataModel.instance.selectedItem = defaultItem;
}
答
马特的空检查是一个很好的解决方案。 (除非在XMLList中可能有空项目,可能不是,但我没有验证过这一点。)
您还可以检查XMLList的长度而不将其转换为字符串:
if ([email protected]_number.length() > 0)
与String和Array的不同之处在于,对于XMLList,length()
是一种方法而不是属性。