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)
 

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)




Preguntas similares