客户机传过来一个XML,内容接收完整,现在需要怎么做才能把这个XML流写入到DataSet中呢?
这个XML是用的和DataSet一样的结构的对象用GetXML方法得到的。
程序如下:
--------------------------------------------------------------------------
发送:
//发送
sqlDataAdapter1.Fill(dataSet11);
try
{
string MessagePath = ".\\private$\\david";
System.Messaging.MessageQueue QueueObject = new System.Messaging.MessageQueue(MessagePath);
System.Messaging.Message MessageObject = new System.Messaging.Message();
MessageObject.Recoverable = true;//保存到文件,防止计算机重新启动丢失
MessageObject.Body = dataSet11.GetXml();//消息内容
MessageObject.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});
QueueObject.Send(MessageObject);
}
catch(Exception ExString)
{
MessageBox.Show("系统发送错误:" + ExString.ToString());
}
MessageBox.Show("发送完成!");
--------------------------------------------------------------------------
接收:
System.Messaging.MessageQueue queue = new System.Messaging.MessageQueue(".\\Private$\\david");
System.Messaging.Message message = queue.Receive();
message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});
string XMLString = message.Body.ToString();
ReaderMessage.Text = XMLString;//到这里,XML已经从Body内读出来了。
问题是,在下面怎么把这个在内存中的XML流整合到DataSet中。

解决方案 »

  1.   

    这句话有问题:
    MessageObject.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] {typeof(string)});改成XML传输格式.原因是DataSet在序列化成xml的时候,会对时间,字符串等等加上特殊标志字符,你如果直接用String传输,到接收端就按照string来反序列化了,自然是错的.
      

  2.   

    StreamWriter streamWriter;
    streamWriter.Write(XMLString);
    DataSet set = new DataSet();
    set.ReadXml(streamWriter.BaseStream);