Extaer el XML de un DataSet en memoria.

06/10/2004 - 13:10 por Javier Ros | Informe spam
Tengo esta función para extraer el XML de un dataset en un MemoryStream:

private MemoryStream XMLData(DataSet ds)
{
// Escribimos el XML en memoria y lo extraemos en un array de bytes.
MemoryStream strm = new MemoryStream();
ds.WriteXml(strm, XmlWriteMode.WriteSchema);
return strm;
}

Funciona bien, pero resulta que ahora la tengo que usar en el .Net Compact
Framework,
y la funcion WriteXml de la clase DataSet no tiene tantas sobrecargas, solo
tiene 2:

1) Escribe en un fichero:
public void WriteXml(string);
2) Escribe en un XmlWriter:
public void WriteXml(XmlWriter, XmlWriteMode);


La primera la descarto, así que opté por la segunda y por suerte el
constructor de XmlTextWriter
acepta un stream, así que la cosa quedaría así:

private MemoryStream XMLData(DataSet ds)
{
MemoryStream strm = new MemoryStream();
XmlTextWriter xml = new XmlTextWriter(strm, Encoding.Default);
ds.WriteXml(xml, XmlWriteMode.WriteSchema);
return strm;
}

Pero el Xml que me genera no se correcto, he probado a poner otro encoder,
Encoding.GetEncoding("windows-1252"), pero no me vale.

¿A alguien se le ocurre una solucion?

Thanks in advance.

Saludos,


Javier Ros Moreno
Aguas de Murcia
Murcia (España)

Preguntas similare

Leer las respuestas

#1 Javier Ros
06/10/2004 - 13:51 | Informe spam
A ver, he examinado el Fichero XML que no puedo cargar, el IExplorer al
leerlo se quejaba
de ciertos caracteres, Ñ, Ü, º, ª, ... lo he sustituido y entonces el
IExplorer abre bien el XML,
pero he abierto el fichero XML que generaba antes, escribiendo directamente
en el
MemoryStream, y resulta que si tiene esos caracteres, ¿que está pasando?
Tiene que estar pasando algo muy tonto y no me doy cuenta.

Saludos,


Javier Ros Moreno
Aguas de Murcia
Murcia (España)


"Javier Ros" $PAMHEREemuasa.es> escribió en el mensaje
news:u$
Tengo esta función para extraer el XML de un dataset en un MemoryStream:

private MemoryStream XMLData(DataSet ds)
{
// Escribimos el XML en memoria y lo extraemos en un array de bytes.
MemoryStream strm = new MemoryStream();
ds.WriteXml(strm, XmlWriteMode.WriteSchema);
return strm;
}

Funciona bien, pero resulta que ahora la tengo que usar en el .Net Compact
Framework,
y la funcion WriteXml de la clase DataSet no tiene tantas sobrecargas,


solo
tiene 2:

1) Escribe en un fichero:
public void WriteXml(string);
2) Escribe en un XmlWriter:
public void WriteXml(XmlWriter, XmlWriteMode);


La primera la descarto, así que opté por la segunda y por suerte el
constructor de XmlTextWriter
acepta un stream, así que la cosa quedaría así:

private MemoryStream XMLData(DataSet ds)
{
MemoryStream strm = new MemoryStream();
XmlTextWriter xml = new XmlTextWriter(strm, Encoding.Default);
ds.WriteXml(xml, XmlWriteMode.WriteSchema);
return strm;
}

Pero el Xml que me genera no se correcto, he probado a poner otro encoder,
Encoding.GetEncoding("windows-1252"), pero no me vale.

¿A alguien se le ocurre una solucion?

Thanks in advance.

Saludos,


Javier Ros Moreno
Aguas de Murcia
Murcia (España)




Respuesta Responder a este mensaje
#2 Alejandro Mezcua
06/10/2004 - 13:56 | Informe spam
Hola, Javier.

No lo he probado, pero CE es sólo Unicode, puedes probar a crear el
XmlTextWriter como

XmlTextWriter xml = new XmlTextWriter(strm, Encoding.Unicode);

Si tengo tiempo lo pruebo y te digo. Si lo haces tú, dinos si funciona...

Un saludo,

Alejandro Mezcua
MVP .NET Compact Framework
http://www.byteabyte.net/

"Javier Ros" $PAMHEREemuasa.es> wrote in message
news:u$
Tengo esta función para extraer el XML de un dataset en un MemoryStream:

private MemoryStream XMLData(DataSet ds)
{
// Escribimos el XML en memoria y lo extraemos en un array de bytes.
MemoryStream strm = new MemoryStream();
ds.WriteXml(strm, XmlWriteMode.WriteSchema);
return strm;
}

Funciona bien, pero resulta que ahora la tengo que usar en el .Net Compact
Framework,
y la funcion WriteXml de la clase DataSet no tiene tantas sobrecargas,


solo
tiene 2:

1) Escribe en un fichero:
public void WriteXml(string);
2) Escribe en un XmlWriter:
public void WriteXml(XmlWriter, XmlWriteMode);


La primera la descarto, así que opté por la segunda y por suerte el
constructor de XmlTextWriter
acepta un stream, así que la cosa quedaría así:

private MemoryStream XMLData(DataSet ds)
{
MemoryStream strm = new MemoryStream();
XmlTextWriter xml = new XmlTextWriter(strm, Encoding.Default);
ds.WriteXml(xml, XmlWriteMode.WriteSchema);
return strm;
}

Pero el Xml que me genera no se correcto, he probado a poner otro encoder,
Encoding.GetEncoding("windows-1252"), pero no me vale.

¿A alguien se le ocurre una solucion?

Thanks in advance.

Saludos,


Javier Ros Moreno
Aguas de Murcia
Murcia (España)




Respuesta Responder a este mensaje
#3 Javier Ros
06/10/2004 - 14:39 | Informe spam
Lo probaré.

Para ir más rapido he estado haciendo las pruebas en el .Net Framework de
Win32, y el resultado es el mismo, prueba esta función si quieres:

public MemoryStream XMLData(DataSet ds)
{
MemoryStream src = new MemoryStream();
XmlTextWriter xml = new XmlTextWriter(src, Encoding.Default);
//GetEncoding("windows-1252")
xml.Formatting = Formatting.Indented;
xml.IndentChar = ' ';
xml.Indentation = 2;
ds.WriteXml(xml, XmlWriteMode.WriteSchema);
xml.Flush();

FileStream fs = new FileStream(@"C:esultado.txt", FileMode.Create);
src.WriteTo(fs);
fs.Close();
return src;
}

observa el resultado, aparentemente es Ok, pero si le cambias la extensión a
.xml el
Internet Explorer no lo carga bien. Sin embargo si usas esta funcion:

public MemoryStream XMLData(DataSet ds)
{
MemoryStream src = new MemoryStream();
ds.WriteXml(src, XmlWriteMode.WriteSchema);


FileStream fs = new FileStream(@"C:esultado.txt", FileMode.Create);
src.WriteTo(fs);
fs.Close();
return src;
}

Rula funciona bien, y el IExplorer lo lee estupendamente. "No entiendo por
que".

Gracias.
Saludos,


Javier Ros Moreno
Aguas de Murcia
Murcia (España)


"Alejandro Mezcua" <amezcua@[nspam]zaltor.com> escribió en el mensaje
news:e$
Hola, Javier.

No lo he probado, pero CE es sólo Unicode, puedes probar a crear el
XmlTextWriter como

XmlTextWriter xml = new XmlTextWriter(strm, Encoding.Unicode);

Si tengo tiempo lo pruebo y te digo. Si lo haces tú, dinos si funciona...

Un saludo,

Alejandro Mezcua
MVP .NET Compact Framework
http://www.byteabyte.net/

"Javier Ros" $PAMHEREemuasa.es> wrote in message
news:u$
> Tengo esta función para extraer el XML de un dataset en un MemoryStream:
>
> private MemoryStream XMLData(DataSet ds)
> {
> // Escribimos el XML en memoria y lo extraemos en un array de bytes.
> MemoryStream strm = new MemoryStream();
> ds.WriteXml(strm, XmlWriteMode.WriteSchema);
> return strm;
> }
>
> Funciona bien, pero resulta que ahora la tengo que usar en el .Net


Compact
> Framework,
> y la funcion WriteXml de la clase DataSet no tiene tantas sobrecargas,
solo
> tiene 2:
>
> 1) Escribe en un fichero:
> public void WriteXml(string);
> 2) Escribe en un XmlWriter:
> public void WriteXml(XmlWriter, XmlWriteMode);
>
>
> La primera la descarto, así que opté por la segunda y por suerte el
> constructor de XmlTextWriter
> acepta un stream, así que la cosa quedaría así:
>
> private MemoryStream XMLData(DataSet ds)
> {
> MemoryStream strm = new MemoryStream();
> XmlTextWriter xml = new XmlTextWriter(strm, Encoding.Default);
> ds.WriteXml(xml, XmlWriteMode.WriteSchema);
> return strm;
> }
>
> Pero el Xml que me genera no se correcto, he probado a poner otro


encoder,
> Encoding.GetEncoding("windows-1252"), pero no me vale.
>
> ¿A alguien se le ocurre una solucion?
>
> Thanks in advance.
>
> Saludos,
>
>
> Javier Ros Moreno
> Aguas de Murcia
> Murcia (España)
>
>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida