Comment puis-je détecter l'élément enfant d'un parent variable E4X (Flex 3, en particulier)?

StackOverflow https://stackoverflow.com/questions/1154916

  •  18-09-2019
  •  | 
  •  

Question

Je XML qui ressemble à ceci:

<question>
    <type_elt>
        <opt_out_flag />
    </type_elt>
</question>

type_elt est pas un nom d'élément; il pourrait être <single>, <multiple> ou autre chose, déterminé lors de l'exécution. Comment, compte tenu de cela, je peux détecter la présence de l'élément opt_out_flag?

J'ai essayé (où xml fait référence à l'élément question):

if (xml.*.opt_out_flag) {
    do_something();
}

mais même dans les cas sans opt_out_flag l'expression ci-dessus retourne true. Il est évident que je manque quelque chose, mais qu'est-ce?

Était-ce utile?

La solution

Je crois que vous voulez utiliser xml.*.hasOwnProperty('opt_out_flag') plutôt que ce que vous utilisez actuellement.

Autres conseils

Essayer cette

xml..opt_out_flag

Il recherchera tout événement

Pouvez-vous être assuré que <opt_out_flag/> sera toujours le premier enfant de l'élément de <question>? Si oui, quelque chose comme ce qui suit devrait fonctionner:

(disclaimer: Je sais que cela fonctionne avec des attributs, mais je ne sais pas si cela va fonctionner avec des éléments de l'enfant)

if( "opt_out_flag" in xml.children()[0] ) {
    doSomething();
}

pouvez-vous utiliser la méthode descendants (récursif dans l'arbre) pour trouver le tag?

var optOutNodes:XMLList = xml.descendants("opt_out_flag");

if(optOutNodes.length())
{
   //do code here
}

L'espoir est ce que vous recherchez.

Vous pouvez utiliser

var optOut:Boolean = xml..opt_out_flag != undefined

vous pouvez omettre le! = Partie non définie, mais je voudrais le laisser là pour faciliter la lecture.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top