我正在尝试访问XMLList项并将其转换为XML对象。
我正在使用这个表达式:
masonicXML.item.(@style_number == styleNum)
例如,如果有匹配,一切正常,但如果没有匹配,那么当我尝试将其转换为XML时,我会得到一个错误,说它必须形成良好。因此,在将其转换为XML之前,我需要确保表达式匹配。我尝试将其设置为XMLList变量并检查它是否为text()属性,如下所示:
var defaultItem:XMLList = DataModel.instance.masonicXML.item.(@style_number == styleNum);
if(defaultItem.text())
{
DataModel.instance.selectedItem = XML(defaultItem);
}
但如果没有匹配,它仍会给我一个错误。如果匹配,它可以正常工作。
谢谢!
答案 0 :(得分: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;
}
答案 1 :(得分:0)
好的,我可以用它来解决这个问题:
if(String(defaultItem.@style_number).length)
答案 2 :(得分:0)
马特的空检查是一个很好的解决方案。 (除非有可能在XMLList中有空项目..可能没有,但我没有验证这一点。)
您还可以检查XMLList的长度,而不将其强制转换为String:
if (defaultItem.@style_number.length() > 0)
与String和Array的区别在于,对于XMLList,length()
是一种方法而不是属性。