Tengo un problema con un código muy sencillo. Lo que quiero conseguir es, a modo de prueba, cargar en un campo de texto dinámico una lista de nombres dada por un xml, y tengo otro campo de texto en el cual introduzco un nombre nuevo y quiero que se añada al xml original.
Para muestra, un botón:
Este es el xml original:
Código :
<listado> <nombre>Juan</nombre> <nombre>Alberto</nombre> </listado>
Y este el codigo del flash:
Código :
function cargarXml() {//Carga del XML var listado:XML = new XML(); listado.ignoreWhite = true; listado.load("listado.xml"); listado.onLoad = function(exito) { if (exito) { lista.text = ""; for (i=0; i<this.firstChild.childNodes.length; i++) { lista.text += this.firstChild.childNodes[i].firstChild.nodeValue; } } else { lista.text = "No disponemos de ningun listado."; } }; } anadirBtn.onPress = function() {//Boton de añadir if (nombre.text.length>1) { var listado:XML = new XML(); listado.ignoreWhite = true; listado.load("listado.xml"); listado.onLoad = function(exito) { var nuevoCampo:XML = new XML("<nombre>"+nombre.text+"</nombre>\n"); var insertaCampo:XMLNode = this.firstChild.childNodes.lastChild; listado.insertBefore(nuevoCampo,insertaCampo); var envio = listado; envio.contentType = "text/xml"; envio.send("listado.xml"); trace(envio); }; } }; borrar1Btn.onPress = function() {//Boton de borrar nombre nombre.text = ""; }; cargarBtn.onPress = function() {//Boton de cargar lista cargarXml(); }; borrar2Btn.onPress = function() {//Boton de borrar lista lista.text = ""; };
La explicación es muy sencilla, tengo 2 campos de texto, uno de introducción de texto y el otro dinámico. Luego tengo cuatro botones, dos para campo de texto. mirando el codigo:
"AnadirBtn" me añade el nombre del campo de texto "nombre" al xml.
"borrar1Btn" borra el nombre del campo de texto "nombre".
"cargarBtn" carga los nombres del xml en el cuadro de texto "lista".
"borrar2Btn" borra los nombres del campo de texto "lista".
No voy a preguntar como grabar los datos en el xml, ya que tendría que meterme con php y eso lo veo difícil....
De momento lo único que querría, es que en la ventana de salida me pusiera el nombre nuevo que he introducido dentro del nodo principal "listado", ya que si lo ejecuto así (suponiendo que haya introducido "nuevoNombre" en el campo de texto "nombre")lo que consigo es esto:
Código :
<listado> <nombre>Juan</nombre> <nombre>Alberto</nombre> </listado> <nombre>nuevoNombre</nombre>
y lo que quiero conseguir es esto:
Código :
<listado> <nombre>Juan</nombre> <nombre>Alberto</nombre> <nombre>nuevoNombre</nombre> </listado>
Me estoy liando (creo) con la parte de
Código :
var nuevoCampo:XML = new XML("<nombre>"+nombre.text+"</nombre>\n"); var insertaCampo:XMLNode = this.firstChild.childNodes.lastChild; listado.insertBefore(nuevoCampo,insertaCampo);
y no se como solucionarlo, la verdad es que me trae un poco loco porque llevo dias dandole vueltas y no consigo entender que he hecho mal...
Os agradeceria mucho la ayuda.
Un saludo.