Question

Comment puis-je écrire les résultats d'une procédure stockée FOR XML PATH en mémoire plutôt que dans un fichier sur disque?

Façon actuelle de faire les choses:

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

Au lieu d'écrire le fichier sur le disque que d'autres méthodes utilisent, je souhaite que cette méthode renvoie le code XML à la mémoire.

Je suppose que ce serait beaucoup plus rapide que d'écrire sur le disque ....

Était-ce utile?

La solution

Vous avez un XmlReader - vous pouvez faire tout toutes sortes de choses. Par exemple

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

Autres conseils

DataSet.WriteXml présente de nombreuses surcharges: vous pouvez écrire dans un flux (y compris un MemoryStream ) et un graveur (y compris un StringWriter ). En supposant que vous souhaitiez vraiment utiliser un DataSet - si vous voulez obtenir le code XML directement sans utiliser un DataSet , utilisez simplement les suggestions de Marc.

Vous pouvez appeler la surcharge de WriteXml qui écrit dans un flux et utiliser un MemoryStream , bien que vous souhaitiez peut-être vouloir que le code XML soit une chaîne longue et longue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top