Frage

Ich habe ein seltsames Problem, ich habe eine XMLList mit den Elementen, die die Attributposition von 0 bis x haben. Wenn ich Text zu einem Elemente dieses XMLList durch folgende Erklärung hinzugefügt werden soll, habe ich eine Fehlermeldung:

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

1050:. Kann nicht auf einen Nicht-Referenzwert zuweisen

Was ist hier falsch?

Danke Markus

War es hilfreich?

Lösung

Sie haben ein wenig genauer sein, wenn sie mit XMLLists tun. Sie haben es tatsächlich zu sagen, welches Element in der Liste, die Sie ändern wollen, sind, auch wenn Sie es filtern 1. bis auf nur Dies sollte es für Sie tun:

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

Andere Tipps

Die Verwendung von [0] in der Antwort von invertedSpear ist eigentlich nicht den XMLList Index referenziert wird, die Position des Kindes auf Zugang des ausgewählten Knotens angibt. Zum Vergleich:

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

Dies wird die gleiche Sache wie invertedSpear Antwort, aber ein Kind an den ausgewählten Knoten hinzufügen, anstatt die untergeordneten Knoten direkt durch den Index zugreifen. Ein Knoten, wenn es vorhanden ist, wird das Kind indiziert bei 0 verfügbar immer hat, in diesem Fall auf den Wert des Knotens selbst bezieht.

Beachten Sie Folgendes:

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]);

Die erste wird arbeiten, wie dargestellt. Der zweite wird auch funktionieren, wie gezeigt. Der dritte wird jedoch fehl, da der Knoten mit Position == 3 kein Kind mit dem Index 1. Hinweis haben, dass dies funktionieren wird ...

c.(@size == 3).children()[1] = 'NEW test';
trace(c);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top