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]);