2010-11-04 13 views
0

Je me sens comme cette question a une réponse vraiment facile et je suis juste en train de le négliger. J'ai besoin d'avoir un pointeur sur un morceau de XML. Je peux obtenir un pointeur sur le nœud parent et tout fonctionne, mais essayer d'obtenir un pointeur sur un nœud qui n'a pas d'enfants renvoie simplement la valeur de ce nœud.Comment obtenez-vous une référence d'objet XML au lieu de la valeur dans as3

Voici un exemple:

<body> 
    <parentNode> 
    <subNode>value</subNode> 
    </parentNode> 
</body> 

Donc, pour obtenir un pointeur vers « parentNode », je dirais quelque chose comme ceci:

var parentNode = xml.parentNode; 

Si vous trace que ce serait le xml indiqué ci-dessus sans les balises du corps.

Ci-dessous je vais essayer d'obtenir un pointeur vers le sous-noeud:

var subNode = xml.parentNode.subNode; 

Tracing SubNode serait juste la valeur et il n'y a pas de pointeur à l'objet XML d'origine, l'édition de sorte que le SubNode var ne modifierait sa valeur, pas celle de l'objet XML d'origine.

Comment obtenir un pointeur sur le sous-noeud afin qu'il puisse être modifié pour modifier l'objet xml d'origine?

+0

Si vous n'êtes pas va être utile, partir. – Jordan

Répondre

1

Voici un exemple de code:

var xml : XML = <a><b><c>test</c></b></a>; 
var cNode : XML = XML(xml.b.c); 
trace("1:", cNode.toXMLString()); 
cNode.setChildren("Hello King Kong"); 
trace("2:", cNode.toXMLString()); 
trace("3:", xml); 

//output : 
//1: <c>test</c> 
//2: <c>Hello King Kong</c> 
//3: <a> 
// <b> 
// <c>Hello King Kong</c> 
// </b> 
//</a> 
+0

Je comprends, la valeur de la chaîne est un enfant du nœud "c". Il me manquait cette partie. Merci! – Jordan

1

En fait, si on trace le nœud, il sera casté à une chaîne, obtenir le textValue de childNode, et non le nœud réel. Si vous placez le noeud dans une variable de type XML, ce sera le noeud réel.

Alors

node:XML = c; will be the node. 
node:String = c; will be the textvalue of that node.