Domanda

Come posso scrivere i risultati di una procedura memorizzata PER XML PERCORSO in memoria piuttosto che un file su disco?

Modo attuale di fare le cose:

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");
}

Invece di scrivere il file su disco su cui altri metodi quindi operano, voglio che questo metodo restituisca l'xml alla memoria.

Suppongo che questo sarebbe molto più veloce della scrittura su disco ....

È stato utile?

Soluzione

Hai un XmlReader - puoi fare tutto ogni genere di cose. Ad esempio

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

Altri suggerimenti

DataSet.WriteXml presenta molti sovraccarichi: puoi scrivere su uno stream (incluso un MemoryStream ) e uno scrittore (incluso un StringWriter ). Ciò presuppone che tu voglia davvero passare attraverso un DataSet - se sei felice di ottenere l'XML direttamente senza usare un DataSet , usa semplicemente i suggerimenti di Marc.

Puoi chiamare il sovraccarico di WriteXml che scrive su uno stream e usare un MemoryStream , anche se potresti voler dire che vuoi l'XML come una grande stringa lunga.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top