Foros del Web » Creando para Internet » Flash y Actionscript »

Flash --> ASP --> XML

Estas en el tema de Flash --> ASP --> XML en el foro de Flash y Actionscript en Foros del Web. Hola a todos, Veréis, estoy haciéndome una base de datos basada en Flash, ASP y XML. Hasta ahora, he conseguido enviar el documento xml a ...
  #1 (permalink)  
Antiguo 13/02/2004, 12:20
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Flash --> ASP --> XML

Hola a todos,

Veréis, estoy haciéndome una base de datos basada en Flash, ASP y XML.

Hasta ahora, he conseguido enviar el documento xml a través de una variable y el método loadVariables("","","") en un fotograma:

_level0.xml1="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"<obra>"+"<title>"+_level0.valor1[0]+"</title>"+"<autor>"+_level0.valor1[1]+"</autor>"+"<letra>"+_level0.ALetra+"</letra>"+"</obra>"

Y luego lo envío con:

loadVariables("probando1.asp?time="+tmp.getTime(), "_level0", "POST");

Lo recibo en ASP y genero un XML de la siguiente forma:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim objXML1, fso, tf, ts, s
Const ForReading = 1
objXML1=Trim(Request("xml1"))
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(Server.MapPath("../documentos/resultado.xml"), True)
tf.Write(objXML1)
tf.Close
Set fso = nothing
Set tf = nothing
Session.Abandon
%>


Esto funciona salvo por un detalle, me escribe el XML como una interminable longaniza, aunque luego el navegador lo reconozca estructurado.

Como quiero que el XML se escriba con estructura, he probado el método siguiente, envío desde Flash:

_level0.xml2 = new XML();
_level0.xml2.parseXML("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"<obra>"+"<title>"+_level0.valor1[0]+"</title>"+"<autor>"+_level0.valor1[1]+"</autor>"+"<letra>"+_level0.ALetra+"</letra>"+"</obra>");
_level0.xml2.sendAndLoad("probando2.asp", _level0.xml1);


Luego en ASP:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim objXML1, objXML2, fso, tf, ts, s
Const ForReading = 1
objXML1=Request("xml2")
Set objXML2=Server.CreateObject("Microsoft.XMLDOM")
objXML2.async="false"
objXML2.load(objXML1)
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(Server.MapPath("../documentos/resultado.xml"), True)
for each x in objXML2.Element.childNodes
tf.Write(x.nodename)
tf.Write(x.text)
next
Response.Write(objXML2.parseError.reason)
Response.Write(objXML2.parseError.line)
tf.Close
Set fso = nothing
Set tf = nothing
Session.Abandon
%>


Pero no va. Estoy metiendo el cuezo a lo bestia, seguro, pero no sé dónde. No tengo nada claro como convertir el objeto XML de Flash en algo reconocible para ASP.

Necesito una ayudita.

Gracias.
  #2 (permalink)  
Antiguo 13/02/2004, 13:15
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
¿¿¿Nadie???
  #3 (permalink)  
Antiguo 13/02/2004, 14:10
Avatar de ¬...  
Fecha de Ingreso: noviembre-2003
Ubicación: Guatemala
Mensajes: 742
Antigüedad: 20 años, 4 meses
Puntos: 4
te puede servir:

http://www.friendsofed.com/books/190.../code/ch20.zip
__________________
'_'

...
  #4 (permalink)  
Antiguo 13/02/2004, 20:16
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Hola ¬...

Gracias por echar un cable, tengo que mirar más en profundidad lo que me mandas, pero a simple vista, parece que debo abrir una conexión y paginar un recorset.

¿No se supone que debería haber un método más directo para que ASP "desmembrase" el valor de la variable en tags?

Saludos.

Última edición por albridi; 25/02/2004 a las 08:38
  #5 (permalink)  
Antiguo 24/02/2004, 19:54
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Sigo bloqueado.

A ver si alguien me puede ayudar un poquejo...

Saludos.
  #6 (permalink)  
Antiguo 25/02/2004, 10:05
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 5 meses
Puntos: 5
Cuando dices estructurado a que te refieres?
  #7 (permalink)  
Antiguo 25/02/2004, 10:26
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 5 meses
Puntos: 5
Creo entender cuando dices que quieres construir el xml estructurado a tabular las etiquetas.

Yo de flash poco pero parece que lo que escribes es JavaScript, que en flash en realidad es Action Script. Prueba a insertar en tu código del flash "\n" y "\t". Los "\n" son retornos de carro y los "\t" con tabuladores. Este último no estoy segura de que funcione en ActionScript. Si te fallara, cambialos por espacios.

Te quedaría algo así:

_level0.xml2 = new XML();
_level0.xml2.parseXML("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+"<obra>\n"+"\t<title>\n"+_level0.valor1[0]+"\n\t</title>\n"+"\t<autor>\n"+_level0.valor1[1]+"\n\t</autor>\n"+"\t<letra>\n"+_level0.ALetra+"\n\t</letra>\n"+"</obra>");
_level0.xml2.sendAndLoad("probando2.asp", _level0.xml1);

Respecto al zip que te enlazaron, no es que tengas que crear una conexión a una BD y abrir un recordset sino que lo que pretendían era enseñarte como se generaba un archivo XML con ASP en vez de hacerlo con flash.

Suerte
  #8 (permalink)  
Antiguo 25/02/2004, 12:02
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Hola Helbira,
Cita:
Creo entender cuando dices que quieres construir el xml estructurado a tabular las etiquetas.
Exactamente.

Pero el problema es que lo que estoy intentando escribir en la parte de ASP es VBScript y no JavaScript. Por tanto creo que lo de los retornos de carro no funcionaría, aunque no estoy seguro.

Probé con <BR>, pero XML no me deja poner este tipo de etiqueta.
Cita:
Si te fallara, cambialos por espacios.
¿Espacios en blanco, sin más? Eso no lo he probado

Por otra parte estoy probando con el objeto que crea un XML estructurado en Flash y lo envía al ASP, pero del ASP recibo esto como documento:


<?xml version="1.0" encoding="UTF-8" ?>
- <obra>
<letra>XML document must have a top level element. 0</letra>
</obra>


Cita:
...lo que pretendían era enseñarte como se generaba un archivo XML con ASP en vez de hacerlo con flash...
Pues de eso se trata, lo que pasa es que si le envío una variable con una cadena XML desde Flash a ASP, me queda un XML "longaniza".

Y si le envío un XML puro, es decir creado por Flash como salida, pues el resultado es el de arriba. Es muy lioso, la verdad.

Gracias por ayudar.

Saludos.
  #9 (permalink)  
Antiguo 25/02/2004, 12:07
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 5 meses
Puntos: 5
No es lioso.. es fácil sólo que parece que hay un poco de desorden en el flujo de información entre Flash y ASP.

Lo primero, eso que dices que XML no admite la etiqueta <BR> no es así exactamente.... tienes que poner <br /> El cierre de la etiqueta es un espacio seguido de /> , y usa minúsculas aunque tampoco es obligatorio.

El código que te escribí es porque entendí que el código XML lo creas en realidad en el flash, el código que te puse para insertar ya los retornos y tabuladores era para flash por eso dije lo del ActionScript. Pero vamos, que en VBScript creo que es igual.

Que me respondes a esto?
  #10 (permalink)  
Antiguo 25/02/2004, 12:11
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 5 meses
Puntos: 5
Otra cosa, lo del xml longaniza te refieres a que no te lo envía entero? que sólo te envía las etiquetas <obra> y <letra>? que no tellega a enviar el title ni el autor? Es eso?

Una pregunta... en caso que le envíes la cadena xml al asp desde el flash, como la envías? por GET? es decir, en una variable por la URL?

Si es así, te recomiendo que no lo hagas así porque la url tiene un tamaño máximo de caracteres y se puede cortar. Puedes buscar en FdW el tamaño máximo pero aunque no lo superes no es una buena forma de programar.

  #11 (permalink)  
Antiguo 25/02/2004, 13:39
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Hola otra vez Helbira,
Cita:
Lo primero, eso que dices que XML no admite la etiqueta <BR> no es así exactamente.... tienes que poner <br /> El cierre de la etiqueta es un espacio seguido de /> , y usa minúsculas aunque tampoco es obligatorio.
Ah, no lo sabía. Es que para mí esto del XML es totalmente nuevo.
Cita:
El código que te escribí es porque entendí que el código XML lo creas en realidad en el flash, el código que te puse para insertar ya los retornos y tabuladores era para flash por eso dije lo del ActionScript. Pero vamos, que en VBScript creo que es igual.
Sí, en ActionScript eso podría valer, pero en VBS creo que tengo que poner la palabra "vbcrlf" para que introduzca el retorno de carro. Algo parecido al "newline" de Flash, vamos.
Cita:
Otra cosa, lo del xml longaniza te refieres a que no te lo envía entero? que sólo te envía las etiquetas <obra> y <letra>? que no tellega a enviar el title ni el autor? Es eso?
Que va, lo envía completamente, pero en una sola linea, aunque luego el navegador lo saca correctamente por pantalla, si lo abres en el Note Pad, por ejemplo, ves una única línea en lugar de un documento con sus etiquetas una en cada línea.
Pero si utilizo el objeto XML de Flash para enviar el documento en lugar de una variable, entonces no envía nada, o eso parece.
Cita:
Una pregunta... en caso que le envíes la cadena xml al asp desde el flash, como la envías? por GET? es decir, en una variable por la URL?
Lo envío mediante post.

Y lo que me tiene frito es que no puedo utilizar un formato tipo:

objXML1 = Request("xml0")
Set objXML2 = Server.CreateObject("Microsoft.XMLDOM")
objXML2.async = False
objXML2.loadXML(objXML1)
nodes = objXML2.documentElement.childNodes
title = nodes.item(0).text
autor = nodes.item(1).text
texto = nodes.item(2).text


Porque no logro que reconozca el "documentElement" ya que o bien no le llega o Flash no lo envía cuando utilizo su objeto XML.

En su lugar, si utilizo el objeto XML de Flash, tengo que hacer algo tipo esto para conseguir un resultado parecido al que busco:

objXML1 = Request("xml0")
Set objXML2 = Server.CreateObject("Microsoft.XMLDOM")
objXML2.async = False
objXML2.loadXML(objXML1)
Set objXMLfin = objXML2.selectnodes("obra")
for each node in objXMLfin
title = node.selectsinglenode("title").firstchild.nodevalu e
autor = node.selectsinglenode("autor").firstchild.nodevalu e
letra = node.selectsinglenode("letra").xml
xml1 = xml1 & "<title>" & title & "</title>" & vbcrlf
xml2 = xml2 & "<autor>" & autor & "</autor>" & vbcrlf
xml3 = xml3 & "<P>" & letra & "</P>" & vbcrlf
next
xmlfin = "<?xml version=""1.0"" encoding=""UTF-8""?>" & vbcrlf & "<obra>" & vbcrlf & xml1 & xml2 & "<letra>" & vbcrlf & xml3 & vbcrlf & "</letra>"& vbcrlf & "</obra>"
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(Server.MapPath("../documentos/resultado.xml"), True)
tf.Write(xmlfin)
tf.Close
response.Write("" & xmlfin & "")
Set fso = nothing
Set tf = nothing


A veces me siento así:

Saludos.
  #12 (permalink)  
Antiguo 25/02/2004, 20:21
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Hola maltos,

Gracias por echar un cable

El tema es que quiero que sea Flash quien envíe el XML y ASP quien lo procese y cree un archivo XML en el servidor.

Eso ya lo consigo, pero con loadVariables, con el objeto XML de Flash no me sale ni a tiros.

El problema es que no sé como pasar un objeto XML de Flash a ASP para que el archivo creado quede "estructurado", es decir, algo así:

<?xml version="1.0" encoding="UTF-8"?>
<obra>
<title>El documento</title>
<autor>Yo mismo</autor>
<letra>
<P>tal cosa</P>
<P>aquello y lo otro</P>
</letra>
</obra>


Cuando lo envió como variable, lo que logro es algo del tipo:

<?xml version="1.0" encoding="UTF-8"?><obra><title>El documento</title><autor>Yo mismo</autor><letra><P>tal cosa</P><P>aquello y lo otro</P></letra></obra>

¿Que estoy enfocando mal? ¿En qué me equivoco?

Saludos.
  #13 (permalink)  
Antiguo 26/02/2004, 02:28
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 5 meses
Puntos: 5
A ver.. entiendo entonces que en ASP ya tienes la estructura xml completa y lo que quieres es añadirle los retornos de carro en su sitio correspondiente y luego guardar el contenido en un archivo, no?

He entendido de tu POST que esto te funciona:

Código PHP:
objXML1 = Request("xml0")
Set objXML2 = Server.CreateObject("Microsoft.XMLDOM")
objXML2.async = False
objXML2.loadXML(objXML1)
Set objXMLfin = objXML2.selectnodes("obra")
for each node in objXMLfin
title = node.selectsinglenode("title").firstchild.nodevalue
autor = node.selectsinglenode("autor").firstchild.nodevalue
letra = node.selectsinglenode("letra").xml
xml1 = xml1 & "<title>" & title & "</title>" & vbcrlf
xml2 = xml2 & "<autor>" & autor & "</autor>" & vbcrlf
xml3 = xml3 & "<P>" & letra & "</P>" & vbcrlf
next
xmlfin = "<?xml version=""1.0"" encoding=""UTF-8""?>" & vbcrlf & "<obra>" & vbcrlf & xml1 & xml2 & "<letra>" & vbcrlf & xml3 & vbcrlf & "</letra>"& vbcrlf & "</obra>"
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(Server.MapPath("../documentos/resultado.xml"), True)
tf.Write(xmlfin)
tf.Close 
response.Write("" & xmlfin & "")
Set fso = nothing
Set tf = nothing
y porque no lo usas? o es que prefieres que los retornos de carro sean con XHTML? pues sustituyes los vbcrlf por <br />. Una de esas líneas de código quedaría así:

Código PHP:
xml2 xml2 "<autor>" autor "</autor><br />" 
Lo que pasa que si lo abres con el Notepad seguirás teniendo una sola línea ya que el notepad no te interpreta html. Tú decides como quieres definir los retornos de carro según lo que vayas a hacer luego con ese xml que guardas en un archivo.

Respecto a que no sabías lo de <br /> ten en cuenta que el HTML no es más que un XML (XHTML) pero las etiquetas que no tienen definida su etiqueta de cierre debes saber que en XML se cierran con la barra del final. Pues eso es lo que he hecho con la ya conocida <br>, ponerla como si se tratara de una etiqueta XML sin etiqueta de cierre
  #14 (permalink)  
Antiguo 26/02/2004, 06:12
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Hola Helbira, gracias por la paciencia

Verás, sí que funciona, excepto con la <letra>, porque esta tiene una colección de nodos <P> a la que me es imposible acceder para colocarlos cada uno en una línea única, con lo que se me queda en una línea el contenido de las etiquetas <letra> algo así:

<letra>
<P>una línea</P><P>otra línea</P><P>y otra línea más</P>
</letra>.


Y tanto en el note pad como en Dreamweaver, cuando abres el XML que ha escrito ASP se ve esto:

<?xml version="1.0" encoding="UTF-8"?>
<obra>
<title>El documento</title>
<autor>Yo mismo</autor>
<letra>
<P>una línea</P><P>otra línea</P><P>y otra línea más</P>
</letra>
</obra>


De todas formas me fastidia no poder utilizar el estilo de control:

nodes = objXML2.documentElement.childNodes
title = nodes.item(0).text
autor = nodes.item(1).text
texto = nodes.item(2).text


Es como si el documento XML que Flash le envía a ASP estuviese mal formado, porque no hay manera de poder acceder a él con ese tipo de programación.

Saludos.

Última edición por albridi; 26/02/2004 a las 06:14
  #15 (permalink)  
Antiguo 26/02/2004, 06:41
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 5 meses
Puntos: 5
No entiendo porque no te hace lo mismo con los <P> que con el resto de etiquetas porque haces justo lo mismo en

Código PHP:
xml3 xml3 "<P>" letra "</P>" vbcrlf 


La verdad que yo de flash no sé apenas nada.... Pero ya veo el problema que tienes. Parece ser que hay conflicto entre el objeto XML de flash con un objeto XML de ASP y al pasar el resultado xml a ASP no puedes hacerlo mandando el objeto completo porque luego en el ASP no lo reconoce como tal.

Dejame buscar
  #16 (permalink)  
Antiguo 26/02/2004, 06:42
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 5 meses
Puntos: 5
Por cierto, has preguntado en los foros de nomaster? Alli saben bastante de xml con flash. Yo siempre que he tenido problemas con el flash me lo han resuelto alli.
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #17 (permalink)  
Antiguo 26/02/2004, 07:26
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Hola otra vez Helbira
Cita:
...Pero ya veo el problema que tienes. Parece ser que hay conflicto entre el objeto XML de flash con un objeto XML de ASP y al pasar el resultado xml a ASP no puedes hacerlo mandando el objeto completo porque luego en el ASP no lo reconoce como tal...
"Sastamente", ni más ni menos, lo que pasa es que me explico fatal

La única manera que he encontrado, es enviando el XML como una cadena desde Flash, pero claro, eso es desaprovechar el objeto nativo de Flash, un fastidio.
Cita:
Dejame buscar
Tendré que dejar una sugerencia para que te hagan un monumento al buen rollo en estos foros.
Cita:
Por cierto, has preguntado en los foros de nomaster?
Pues no la verdad, pero me parece muy buena idea, lo haré.

Gracias por tu interés en ayudar

Un saludo.

Última edición por albridi; 26/02/2004 a las 08:58
  #18 (permalink)  
Antiguo 26/02/2004, 12:38
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Hola otra vez Helbira,

Se me ha ocurrido que quizás tenga un problema con el parser de Microsoft porque he visto esta actualización:

http://www.microsoft.com/downloads/d...displaylang=es

Pero claro, no sé si tiene algo que ver conmigo o no, puesto que yo utilizo PWS para mi base de datos.

¿Podría ser por esto?

Saludos.
  #19 (permalink)  
Antiguo 27/02/2004, 02:16
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 5 meses
Puntos: 5
Pues no creo que tenga nada que ver, pero por instalarlo no pierdes nada. Es una actualización nada más.

  #20 (permalink)  
Antiguo 27/02/2004, 05:50
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Asias, again Helbira.

Por cierto ya he puesto el post en los foros de nomaster a ver si hay suerte.

Un saludo.
  #21 (permalink)  
Antiguo 27/02/2004, 05:54
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 5 meses
Puntos: 5
ok!

Espero que publiques la solución en este post si telo resuelven

Ciaoo

  #22 (permalink)  
Antiguo 27/02/2004, 05:59
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Cita:
Espero que publiques la solución en este post si telo resuelven
Eso ta' echo

Nos web-mos.
  #23 (permalink)  
Antiguo 27/02/2004, 13:38
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
Hola otra vez maltos,

Con loadVars no tengo problemas, incluso casi he conseguido estructurar el XML con lo que me sugirió Helbira (mil millones de gracias, por cierto ¿lo había dicho ya?) de utilizar "\r" en Flash.

Y digo casi, porque donde Flash crea un espacio en blanco entre dos etiquetas <P>, o sea "<P> </P> ", ASP me escribe "<P>& nbsp; </P> " y el navegador da un fallo, claro.

Pero estoy cerca, muy cerca.

En cuanto a cómo enviar el XML desde Flash con el objeto nativo me queda claro, pero con ASP, ¡Ay amigo! Ahí la cosa cambia.

El problema es que no sé por qué razón soy capaz de manejar cualquier cadena en ASP, pero si lo que envío es el objeto XML de Flash, no consigo manejarlo ni a la de tres.

Suponía que ASP lo recibiría vía Request , como hace con las variables, pero parece ser que no es así.

En fin gracias por la ayuda a tí también si no os tuviese por aquí, creo que ya habría pateado varias veces mi CPU

Seguiré informando, lo conseguiré, 'toy seguro

Un saludo.

Última edición por albridi; 27/02/2004 a las 13:42
  #24 (permalink)  
Antiguo 01/03/2004, 10:40
 
Fecha de Ingreso: noviembre-2003
Ubicación: España
Mensajes: 212
Antigüedad: 20 años, 4 meses
Puntos: 3
¡¡¡PRUEBA SUPERADA!!!

Hola Helbira, hola maltos.

Lo he conseguido, ya recibo XML de Flash en ASP

Y como lo prometido es deuda, paso a explicar el tema:

Lo de los espacios en blanco en Flash, lo he resuelto colocando cada línea del campo de texto que el usuario utiliza para introducir los datos en un Array al que he llamado “lineas”. Luego sólo tengo que localizar cualquier elemento del Array cuya longitud sea 1 y sustituirlo por una cadena vacía. Ya sé que no es lo mejor pero como en esta aplicación es prácticamente imposible que haya líneas de texto cuya longitud sea 1, exceptuando los retornos de carro, pues la solución me vale perfectamente.

He aquí el código Flash puesto en el botón de envío:

on (rollOver) {
//lineas es un Array que está en el nivel cero.
//ALetra, titulo, y autor son campos de texto donde el usuario introduce lo que quiere guardar.

_level0.lineas = _level0.ALetra.split("\r");
}
on (press, releaseOutside) {
_level0.ALetra = "";
for (i=0; i<_level0.lineas.length; i++) {
if (_level0.lineas[i].length == 1) {
_level0.lineas[i] = "";
}
_level0.letrafin += "\r<P>"+_level0.lineas[i]+"</P>";
}
_level0.xml0 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r<obra>\r<title>"+_level0.titulo+"</title>\r"+"<autor>"+_level0.autor1[1]+"</autor>\r"+"<letra>"+_level0.letrafin+"\r</letra>\r</obra>";
updateAfterEvent();
}
on (release) {
_level0.xml2.parseXML(_level0.xml0);
_level0.xml2.sendAndLoad("probandoFSO4.asp?time="+ tmp.getTime(), _level0.xml2);
delete _level0.valor1;
}


Luego en el mismo fotograma de Flash preparo la recepción de la respuesta del servidor en el mismo objeto que utilicé para enviar el XML:

xml2 = new XML();
xml2.onLoad = function(success) {
if (success) {
_level0.ALetra = xml2;
} else {
_level0.ALetra = "No se ha recibido respuesta del Servidor";
}
};


Y por fín el código en ASP:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Option Explicit
Response.buffer=True
Response.addHeader "pragma", "no-cache"
Response.CacheControl = "Private"
Response.Expires=-1500

Dim objXML1, objXML2, objXMLfin, fso, tf, xmlfin, title, autor, letra, node
'Recibimos el XML de Flash como colección Form.
objXML1 = Request.Form()
'Creamos un objeto XMLDOM para que reciba el XML de Flash.
Set objXML2 = Server.CreateObject("Microsoft.XMLDOM")
objXML2.async = False
objXML2.loadXML(objXML1)
'Analizamos lo recibido y elegimos lo que nos interesa.
Set objXMLfin = objXML2.selectnodes("obra")
for each node in objXMLfin
title = node.selectsinglenode("title").xml
autor = node.selectsinglenode("autor").xml
letra = node.selectsinglenode("letra").xml
next
'Configuramos una cadena XML de respuesta que nos sirva para crear el archivo XML.
xmlfin = "<?xml version=""1.0"" encoding=""UTF-8""?>" & vbcrlf & "<obra>" & vbcrlf & title & vbcrlf & autor & vbcrlf & letra & vbcrlf & "</obra>"
'Creamos el objeto que nos permite escribir el XML a disco.
Set fso = CreateObject("Scripting.FileSystemObject")
'Lo escribimos en la ruta que queramos.
Set tf = fso.CreateTextFile(Server.MapPath("/PruebaXML/resultado.xml"), True)
tf.Write(xmlfin)
tf.Close
'Le respondemos a Flash lo que nos interese mostrar al usuario.
Response.Write("Este es el objeto XML que se escribirá en el directorio:" & xmlfin & "<br>Gracias por haberme ayudado ")
'Destruimos los Objetos y abandonamos la sesión con ASP.
Set fso = nothing
Set tf = nothing
Set objXML2 = nothing
Set objXMLfin = nothing
Session.Abandon
%>


Como véis el fallo lo tenía en la propiedad del objeto Request , ya que en lugar de recoger una cadena como hacía hasta el momento objXML1 = Request(“xml0”) , tenía que recibir un objeto de la colección Form(), o sea: objXML1 = Request.Form()

No sé si os lo he dicho ya pero...

¡¡¡MUCHÍSIMAS GRACIAS POR VUESTRA AYUDA!!!

Un saludo.

Última edición por albridi; 01/03/2004 a las 10:45
  #25 (permalink)  
Antiguo 02/03/2004, 02:19
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 5 meses
Puntos: 5
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:33.