Kann nicht auf einen Nicht-Referenzwert zuweisen
-
22-09-2019 - |
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
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);