Pregunta

Tengo un problema extraño, tengo una XMLList con elementos que tienen la posición atributo de 0 a x. Cuando quiero añadir texto a un elemento de esa XMLList por la siguiente declaración, aparece un mensaje de error:

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

1050:. No se puede asignar a un valor distinto de referencia

¿Qué pasa aquí?

Gracias Markus

¿Fue útil?

Solución

tiene que ser un poco más específico cuando se trata de XMLLists. De hecho tienes que decirle qué elemento de la lista que están queriendo cambio, incluso cuando filtra hacia abajo a solamente 1. Esto debe hacerlo por usted:

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

Otros consejos

El uso de [0] en la respuesta por invertedSpear no es en realidad referencia al índice XMLList, se indica la posición del niño con el acceso del nodo seleccionado. A modo de comparación

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

Esto hace lo mismo que la respuesta de invertedSpear, pero se sumará a un niño al nodo seleccionado, en lugar de acceder al nodo hijo directamente por el índice. Un nodo, si existe, siempre tendrá el niño indexadas en 0 disponible, en este caso se refiere al valor del propio nodo.

Tenga en cuenta lo siguiente:

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

La primera de ellas va a funcionar, como se muestra. El segundo también funcionará, como se muestra. La tercera, sin embargo, se producirá un error debido a que el nodo con la posición == 3 no tiene un niño en el índice 1. Tenga en cuenta que esto va a funcionar ...

c.(@size == 3).children()[1] = 'NEW test';
trace(c);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top