AS3 :XPath renvoie XMLNode au lieu de XMLList en cas de correspondance unique ?
-
14-11-2019 - |
Question
AS3
J'essaie de charger dynamiquement des images basées sur un fichier XML.Le problème avec lequel je suis coincé est une fonction qui est censée renvoyer le nœud trouvé à partir de l'identifiant fourni.Comme dans le code suivant
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;
}
Le XML ressemble à ceci :
<root>
<bacase name="a" />
<bacase name="b" />
</root>
En anticipant vos questions, tout se fait dans l'événement COMPLETE du chargeur XML, une fois le XML chargé.
Maintenant, le problème est que XMLList semble être vide, alors que XML est correctement renseigné et que l'identifiant correspond définitivement à l'un des nœuds.Lorsque je duplique le nœud interrogé, la liste indique correctement qu'elle contient deux nœuds.Je suppose donc que s’il n’y a qu’une seule correspondance, la XMLList n’est pas créée et le résultat contient des données de type XMLNode.
Y a-t-il quelqu'un pour confirmer cela ?Si tel est le cas, existe-t-il un moyen de garantir que la requête renvoie toujours le type XMLList ?
Merci à Artur
La solution
XMLNode
fonctionne uniquement avec l'ancien flash.xml.XMLDocument
.Un seul nœud serait de type XML
si tu utilises XML
ou XMLList
.
Ce extrait fonctionne bien pour moi :
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]);