Das Schreiben von XML-Speicher statt Festplatte
Frage
Wie kann ich mich über die Ergebnisse eines FOR XML PATH gespeicherte Prozedur in dem Speicher anstelle einer Datei auf der Festplatte zu schreiben?
Aktuelle Art und Weise, Dinge zu tun:
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");
}
Statt die Datei auf die Festplatte zu schreiben, die anderen Methoden arbeiten dann auf, ich möchte diese Methode haben, die xml memeory zurück.
Ich gehe davon aus, dass dies viel schneller sein würde als auf der Festplatte zu schreiben ....
Lösung
Sie haben eine XmlReader
- Sie tun können, alle möglichen Dinge. Zum Beispiel
XmlDocument doc = new XmlDocument();
using(XmlReader xr = cmd_Org.ExecuteXmlReader()) {
doc.Load(xr);
}
// TODO: play with "doc" with xpath etc
Andere Tipps
DataSet.WriteXml
hat viele Überlastungen - können Sie in einen Stream (einschließlich eines MemoryStream
) und Schriftsteller (einschließlich eines StringWriter
) schreiben. Das ist vorausgesetzt, Sie wirklich über eine DataSet
gehen wollen -. Wenn Sie glücklich, die XML direkt erhalten, ohne einen DataSet
zu verwenden, dann benutzen Sie einfach Marc Vorschläge
Sie können die Überlastung von WriteXml
aufrufen, die in einen Stream schreibt, und ein MemoryStream
verwenden, obwohl Sie kann bedeuten, dass Sie die XML als große lange Zeichenfolge wollen.