DataSet a XML

29/07/2004 - 15:15 por Javier Ros | Informe spam
En un servicio web tengo esta función que recibe un DataSet y devuelve
el XML equivalente en un array de bytes:

private byte[] XMLData(DataSet ds)
{
// Escribimos el XML en memoria y lo extraemos en un array de bytes.
MemoryStream src = new MemoryStream();
ds.WriteXml(src, XmlWriteMode.WriteSchema);
byte [] buffer = src.GetBuffer();
src.Close();
return buffer;
}

Creo que es correcta, pero luego al leer el XML recibo un XMLException, he
hecho pruebas, si guardo el array de bytes en un fichero y lo habro me da el
mismo error, resulta que el metodo WriteXml del DataSet no me está
escribiendo
en la primera linea la cadena: <?xml version="1.0" standalone="yes"?>
si edito ese archivo e introduzco esa linea en la primera fila del archivo
si que lo
abre sin problemas.

que puede estar pasando?

Gracias.

Javier Ros Moreno
 

Leer las respuestas

#1 Javier Ros
29/07/2004 - 15:58 | Informe spam
Bueno, al no encontrar solucion, he encontrado los metodos GetXmlSchema y
GetXml(), que
devuelven el xml en un string, y sustitui la funcion por esta:

private byte[] XMLData(DataSet ds)
{
byte [] buffer Encoding.GetEncoding("windows-1252").GetBytes(ds.GetXml());
return buffer;
}

ya lo carga bien, pero necesito escribir tambien el esquema de datos, así
que hice esto:

byte [] buffer Encoding.GetEncoding("windows-1252").GetBytes(ds.GetXmlSchema() +
ds.GetXml());

esto me falla, puesto que la ultima linea del esquema y la primera del xml
se solapan en una, un da un XmlException
así que lo sustitui por:

byte [] buffer Encoding.GetEncoding("windows-1252").GetBytes(ds.GetXmlSchema() + "" +
ds.GetXml());

pero tambien me falla.

Estoy un poco perdido, no sabia que el xml era tan delicado, simple sí, pero
muy delicado, en el momento
que no hay algo bien peta, y lo peor es que solo salta un XmlException pero
no te dice porque.

Alguna idea?


"Javier Ros" $PAMHEREemuasa.es> escribió en el mensaje
news:
En un servicio web tengo esta función que recibe un DataSet y devuelve
el XML equivalente en un array de bytes:

private byte[] XMLData(DataSet ds)
{
// Escribimos el XML en memoria y lo extraemos en un array de bytes.
MemoryStream src = new MemoryStream();
ds.WriteXml(src, XmlWriteMode.WriteSchema);
byte [] buffer = src.GetBuffer();
src.Close();
return buffer;
}

Creo que es correcta, pero luego al leer el XML recibo un XMLException, he
hecho pruebas, si guardo el array de bytes en un fichero y lo habro me da


el
mismo error, resulta que el metodo WriteXml del DataSet no me está
escribiendo
en la primera linea la cadena: <?xml version="1.0" standalone="yes"?>
si edito ese archivo e introduzco esa linea en la primera fila del archivo
si que lo
abre sin problemas.

que puede estar pasando?

Gracias.

Javier Ros Moreno


Preguntas similares