1

我正在尝试访问 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);
                    }

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

谢谢!

4

3 回答 3

1

根据我的经验,检查结果的最简单方法是获取列表的第 0 个元素并查看它是否为null.

这是您的代码示例,并进行了一些调整。请注意,我已将defaultItemfrom的类型更改XMLListXML,并将其分配给列表的第 0 个元素。

var defaultItem:XML = 
    DataModel.instance.masonicXML.item.(@style_number == styleNum)[0];
if( defaultItem != null ) 
{
    DataModel.instance.selectedItem = defaultItem;
}
于 2009-04-16T13:24:24.807 回答
0

好的,我可以使用它:

if(String(defaultItem.@style_number).length)
于 2009-04-15T15:21:16.333 回答
0

Matt 的 null 检查是一个很好的解决方案。(除非 XMLList 中有可能包含 null 项。可能不会,但我还没有验证这一点。)

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

if (defaultItem.@style_number.length() > 0)

String 和 Array 的区别在于 XMLListlength()是方法而不是属性。

于 2009-05-20T22:08:23.227 回答