La meilleure façon de déterminer si un attribut XML existe en Flex
J'ai une réponse XML à partir d'un HTTPService appel avec e4x format de résultat.
<?xml version="1.0" encoding="utf-8"?>
<Validation Error="Invalid Username/Password Combination" />
J'ai essayé:
private function callback(event:ResultEvent):void {
if(event.result..@Error) {
//error attr present
}
else {
//error attr not present
}
}
Cela ne semble pas fonctionner (il pense toujours que l'attribut d'erreur, sorties) quelle est la meilleure façon de le faire? merci.
EDIT: j'ai également essayé de comparer l'attribut null et une chaîne vide sans un tel succès...
Vérifier ma réponse à la fin. Je crois que c'est ce que vous avez été cherchez! 🙂
OriginalL'auteur mmattax | 2008-09-29
Vous devez vous connecter pour publier un commentaire.
Vous avez trouvé la meilleure façon de le faire:
La
attribute
méthode est la meilleure façon de récupérer les attributs si vous ne savez pas s'ils sont là ou pas.event.result.Error.length() > 0
qui va échouer si l'Erreur n'existe pas. Pour plus d'infos, voir: adobe.com/livedocs/flash/9.0/main/wwhelp/wwhimpl/common/html/...Je pense que tu voulais dire, "event.result.@Error" depuis l'événement.résultat.Erreur serait de rechercher le nœud nommé "Erreur" au lieu de l'attribut.
OriginalL'auteur Theo
J'aime cette méthode car un.) il est douloureusement simple et b.) Ely Greenfield utilise. 😉
XML(node).attribute(attrNameString)[0] = "some value";
OriginalL'auteur onekidney
Vous pouvez vérifier cela de la manière suivante:
ou dynamiquement
Remarque que dans votre exemple, les deux points permet de récupérer tous les descendants à tous les niveaux de sorte que vous obtiendrez une liste en conséquence. Si il n'y a pas d'Erreur attributs, vous obtiendrez une liste vide. C'est pourquoi il ne sera jamais égal à null.
OriginalL'auteur Christophe Herreman
En supposant que dans votre exemple
event.result
est unXML
objet dont le contenu est exactement comme vous l'avez posté, cela devrait fonctionner (en raison du fait que la Validation de la balise est la balise racine du document XML):L'exemple ci-dessus, supposons qu'il existe un
Error
attribut avec une valeur vide doit être traitée comme une "erreur" de cas, cependant, de sorte que si vous voulez savoir si l'attribut fait existe ou pas, vous devriez faire ceci:OriginalL'auteur hasseg
J'aime utiliser la syntaxe suivante pour vérifier parce que c'est facile à lire, moins de frappe et qu'il est presque à égalité comme la méthode la plus rapide:
Pour affecter une valeur à cet attribut lorsque vous ne connaissez pas le nom de la main avant de l'utiliser la
attribute
méthode:Tous les éléments suivants sont des méthodes pour tester si un attribut existe recueillies à partir des réponses répertoriés sur cette question. Depuis il y en avait tellement que j'ai couru chacun dans la 11.7.0.225 lecteur de débogage. La valeur sur la droite est la méthode utilisée. La valeur de gauche est le plus bas de temps en millisecondes nécessaire lors de l'exécution du code d'un million de fois. Voici les résultats:
Test de Performance code:
OriginalL'auteur 1.21 gigawatts
J'ai trouvé une solution, je suis toujours intéressé si il y a une meilleure façon de le faire...
Cela fonctionne:
OriginalL'auteur mmattax
Ici, vous allez:
Facile, hein? 🙂
OriginalL'auteur Rihards