AS3:如果单个匹配,XPath返回XMLNode而不是XMLList?

时间:2011-05-16 14:51:58

标签: xml flash actionscript-3 xmlnode xmllist

AS3

我正在尝试基于XML文件动态加载图片。我坚持的问题是一个应该从提供的标识符返回找到的节点的函数。 如下面的代码

function getStudyById(id:String):XMLNode{
    var xl:XMLList = xml.bacase.(@name==id); // xml is a global variable
    return xl.children()[0]; // xl[0] does not work either
    // return (xl.length()>0) ? xl[0] : null;
}

XML是这样的:

<root>
    <bacase name="a" />
    <bacase name="b" />
</root>

预测您的问题,一旦加载了XML,这一切都在xml加载器的COMPLETE事件中完成。

现在的问题是XMLList似乎是空的,而xml被正确填充,并且标识符肯定与其中一个节点匹配。 当我复制查询节点时,列表正确跟踪包含两个节点。所以我的猜测是,如果只有一个匹配,则不会创建XMLList,结果包含XMLNode数据类型的数据。

有人确认这个吗?如果是这样,有没有办法确保查询始终返回XMLList类型?

由于 阿图尔

1 个答案:

答案 0 :(得分:0)

XMLNode仅适用于旧flash.xml.XMLDocument。如果您使用XMLXML,则单个节点的类型为XMLList

这个剪辑对我来说很好用:

var xml:XML = <root>
        <bacase name="a" />
        <bacase name="b" />
    </root>;

var p:XMLList = xml.bacase.(@name == "a");

if (p.length() > 0) return XML(p[0]);