AS3: XPath возвращает 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>

Предвидя ваши вопросы, все это делается в событии COMPLETE загрузчика xml после загрузки XML.

Теперь проблема в том, что XMLList кажется пустым, в то время как xml заполнен правильно, и идентификатор определенно соответствует одному из узлов. Когда я дублирую запрашиваемый узел, список корректно отслеживается как содержащий два узла. Поэтому я предполагаю, что, если есть только одно совпадение, XMLList не создается, и результат содержит данные типа данных XMLNode.

Кто-нибудь есть, чтобы подтвердить это? Если так, есть ли способ гарантировать, что запрос всегда возвращает тип XMLList?

Спасибо Артур

1 ответ

Решение

XMLNode работает только со старым flash.xml.XMLDocument, Один узел будет иметь тип XML если вы используете XML или же 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]);
Другие вопросы по тегам