XMLDom: transformNode y transformNodeToObject

07/10/2004 - 21:22 por Miguel Gonzalez | Informe spam
Hola gente!

En una página ASP, tras aplicar una XSL sobre un XML necesito guardar el resultado como un archivo
HTML (no es para internet, sino para grabar los HTMLs generados de esta forma en un CD, de manera
que el usuario navegue en forma local en su CDROM).

He intentado dos vías (ambas con problemas):

1) Si guardo el "string" resultante de utilizar "transformNode()" mediante FSO (File System Object)
el archivo se guarda correctamente, salvo que no incluye la codificación del documento XML original
y me agrega automáticamente un "metatag" con la codificación UTF-16. Obviamente, según qué
navegadores, ello me da problemas. Idealmente, necesitaría desactivar la inclusión de dicho
"metatag", o bien modificar la codificación del "metatag" en el momento de invocar el método:

<%string1 = xml1.transformNode(xsl1)%>

Una opción provisional para solucionar esto ha sido utilizar:

<%string1 = Replace(string1, "UTF-16", "ISO-8859-1")%>

...antes de grabar el archivo, pero es una solución, digamos, "poco elegante" que puede generar
problemas futuros (me imagino un documento que trate por ejemplo de las codificaciones...)


2) En cambio, si utilizo el método "transformNodeToObject()" y lo envio mediante "Response" al
cliente, puedo comprobar que el "stream" contiene la codificación correcta en el "metatag" agregado
(ISO-8859-1), pero no he encontrado la forma de salvar/guardar dicho "Response" en un archivo.

<%xml1.transformNodeToObject xsl1 Response%>


Alguna idea, recomendación, sugerencia???

Gracias anticipadas!

Saludos!
Miguel
 

Leer las respuestas

#1 Jordi Rambla
10/11/2004 - 13:40 | Informe spam
Hola,

Disparo sin hacer la prueba, pero al serializar, la solución es algo como
esto (en C#):

System.IO.MemoryStream stream = new System.IO.MemoryStream();

System.IO.StreamWriter cadena = new
System.IO.StreamWriter(stream,System.Text.Encoding.GetEncoding("ISO-8859-1"));



Al pasarle el stream al Serializer, ya sabe que la cadena tiene esa
codificación. Entiendo que podrás hacer algo similar al recibir el string.

No sé si te servirá de nada, pero por si acaso.

Jordi Rambla

Preguntas similares