2010-01-17 5 views
1

J'ai besoin de savoir comment je peux analyser un chemin variable dans Flex 3 & e4X. Par exemple, j'ai deux chaînes XML où le nom d'un élément est la seule différence.Comment créer des chemins variables en utilisant e4X?

<NameOfRoot> 
    <NameOfChild1> 
     <data>1</data> 
    </NameOfChild1> 
</NameOfRoot> 

<NameOfRoot> 
    <NameOfChild2> 
     <data>2</data> 
    </NameOfChild2> 
</NameOfRoot> 

Actuellement, je suis accès aux variables comme ceci:

var data1:String = NameOfRoot.*::NameOfChild1.*::data; 
var data2:String = NameOfRoot.*::NameOfChild2.*::data; 

Je préfère faire cette tâche plus abstraite de sorte que si « NameOfChild3 » est introduit, je ne ai pas besoin de mettre à jour le code. Par exemple:

var data:String = NameOfRoot.*::{variable}.*::data; 

Est-ce que quelqu'un a des idées sur la façon dont cela peut être fait?

Répondre

0

Il ressemble à ". *." l'opération fonctionnera. Je me demande si c'est la façon la plus simple de gérer ce problème.

var data:String = NameOfRoot.*.*::data; 
1

Utilisez la propriété child (LiveDocs exemple here):

var tagName:String = "NameOfChild1"; 
var data:String = NameOfRoot.child(tagName).data; 

C'est ce sans espace de nommage - pas sûr que ce soit nécessaire dans votre cas, mais je suppose que vous ajouteriez quelques *:: « s ?

1

cela fonctionne aussi:

var data:String = NameOfRoot..data; 

mais si vous avez plus de 1 nœud de données, vous devrez trier certains trucs.

Questions connexes