Pregunta

¿Qué debo hacer para escribir en la memoria los resultados de un procedimiento almacenado FOR XML PATH en lugar de un archivo en el disco?

Forma actual de hacer las cosas:

private  void GetChartData(string OC_Ttl1, string OC_Ttl2, string OC_OL31)
{
    OC_Ttl_1 = OC_Ttl1;
    OC_Ttl_2 = OC_Ttl2;
    OC_OL3_1 = OC_OL31;
    //Output xml
    DataSet orgDataSet = new DataSet();
    orgDataSet.ReadXml(cmd_Org.ExecuteXmlReader(), XmlReadMode.Auto);
    orgDataSet.WriteXml("InputXMLFiles/" + OC_OL3_1.Replace(" ", 
        "_").Replace("/", "-") + ".xml");
}

En lugar de escribir el archivo en el disco en el que operan otros métodos, quiero que este método devuelva el xml a memeory.

Supongo que esto sería mucho más rápido que escribir en el disco ...

¿Fue útil?

Solución

Tienes un XmlReader - puedes hacer todas todo tipo de cosas. Por ejemplo

XmlDocument doc = new XmlDocument();
using(XmlReader xr = cmd_Org.ExecuteXmlReader()) {
    doc.Load(xr);
}
// TODO: play with "doc" with xpath etc

Otros consejos

DataSet.WriteXml tiene muchas sobrecargas: puedes escribir en una secuencia (incluido un MemoryStream ) y un escritor (incluido un StringWriter ). Eso supone que realmente desea ir a través de un DataSet : si está contento de obtener el XML directamente sin usar un DataSet , simplemente use las sugerencias de Marc.

Puede llamar a la sobrecarga de WriteXml que se escribe en una transmisión, y usar un MemoryStream , aunque puede querer decir que desea el XML como una cadena larga y grande.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top