【发布时间】:2014-02-12 10:36:19
【问题描述】:
如何在 XElement 中获取 DataSet 的 Diffgram? (或 XDocument)
我发现了如何在字符串中获取 Diffgram:
// DataSet to Diffgram in a string:
StringBuilder sb = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings { Indent = true, Encoding = Encoding.UTF8 };
using (XmlWriter xw = XmlWriter.Create(sb, settings))
{
ds.WriteXml(xw, XmlWriteMode.WriteSchema);//XmlWriteMode.DiffGram
}
string str = sb.ToString();
但是首先将 diffgram 的 xml 输出到字符串然后将其解析回 XElement 似乎很浪费。因此,我试图找出如何填写此代码中缺少的链接,该链接应将 diffgram 的 xml 传输而不转换为 Xml 变量:
// I have a DataSet filled with some data
DataSet ds = new DataSet();
ds.Tables.Add(ScanData);
// I need the diffgram of the DataSet in an XElement
XElement xe = null;
XmlReader xr = xe.CreateReader();
// I could live with output to XDocument, and extract the XElement later
XDocument xd = new XDocument();
XmlReader xrd = xd.CreateReader();
// Q: How do I construct a stream that connects an XmlReader to ds.WriteXml()?
Stream stream = ...???... ;
// This method creates the DiffGram output format to a stream
ds.WriteXml(stream, XmlWriteMode.WriteSchema);//diffgram output
我希望找到我的代码问题的答案,甚至可能了解流/读取器/写入器的真正工作原理。
【问题讨论】: