从XmlElement到DataSet的解决方案
调查:
XmlElement有一个WriteTo()方法,参数是一个XmlWriter.
XmlWriter是一个抽象类,XmlTextWriter是它的一个实现
XmlTextWriter的构造函数的参数可以是
- TextWriter, 或者
- Stream, Encoding, 或者
- 文件名,Encoding
DataSet有一个ReadXml()方法,参数可以是
- Stream
- 文件名
- TextReader
- XmlReader
(还有一个可选的参数是XmlReadMode, 这里先忽略)
结论:
我们可以新建一个类继承Stream, 暂且叫做MemoryBufferStream. 这个Stream用作Output时,把输出的字节流保存在一个内存缓冲区中;用作Input时,从内存缓冲区中读出字节流。把MemoryBufferStream的对象传给XmlTextWriter的构造函数,把构造出的XmlTextWriter对象传给XmlElement的WriteTo()方法,再把同样的MemoryBufferStream对象传给DataSet的ReadXml方法。接下去的问题是怎么构造这个MemoryBufferStream。
也许还有更好、更直接、更优雅的办法