Question

J'ai un problème étrange, j'ai un XMLList avec des éléments qui ont la position d'attribut de 0 à x. Quand je veux ajouter du texte à un élément de cette XMLList par la déclaration suivante, je reçois un message d'erreur:

textElements.(@position == columnIndex) = "anyString";
  

1050:. Impossible d'attribuer à une valeur non de référence

Quel est le problème ici?

Merci Markus

Était-ce utile?

La solution

vous devez être un peu plus précis en traitant XMLLists. Vous avez fait de le dire quel élément dans la liste que vous êtes désireux de changer, même lorsque vous filtrez, est réduit à 1. Cela devrait le faire pour vous:

textElements.(@position==columnIndex)[0]= "anyString";

Autres conseils

L'utilisation de [0] dans la réponse par invertedSpear fait référence pas réellement l'indice de XMLList, on indique la position de l'enfant à l'accès du noeud sélectionné. A titre de comparaison

textElements.(@position==columnIndex).appendChild("anyString");

Cela va faire la même chose que la réponse de invertedSpear, mais ajoutera un enfant au nœud sélectionné, au lieu d'accéder au nœud enfant directement par index. Un nœud, si elle existe, aura toujours l'enfant indexé à 0 disponible, dans ce cas, il se réfère à la valeur du nœud lui-même.

Considérez ce qui suit:

var xml:XML = <root><node position="1" /><node position="2" /><node position="3" ><subnode>Test1</subnode><subnode>Test2</subnode></node></root>;

var c:XMLList = xml.children();
trace(c);

c.(@position == 1)[0] = "first test";
c.(@position == 2).appendChild("SECOND TEST");
c.(@position == 3)[1] = 'FINAL_test';

trace(c); 
trace(c[0][0]);

Le premier fonctionnera, comme le montre. Le second travaillera également, comme le montre. Le troisième, cependant, échouera car le nœud avec la position == 3 ne dispose pas d'un enfant à l'index 1. Notez que cela fonctionnera ...

c.(@size == 3).children()[1] = 'NEW test';
trace(c);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top