XmlSerializer 反串时说格式不对

iamlain 2006-04-21 09:16:42
串行化的代码如下:
MemoryStream ms = new MemoryStream();
XmlSerializer ser = new XmlSerializer(typeof(DataSet));
ser.Serialize(new XmlTextWriter(ms,Encoding.UTF8), WycjDataSet );

一个DATASET 下面是串行化后的内容

<?xml version="1.0" encoding="utf-8"?>
<DataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Table1">
<xs:complexType>
<xs:sequence>
<xs:element name="KCMC" type="xs:string" minOccurs="0"/>
<xs:element name="XNXQ" type="xs:string" minOccurs="0"/>
<xs:element name="FS" type="xs:string" minOccurs="0"/>
<xs:element name="YSFS" type="xs:string" minOccurs="0"/>
<xs:element name="CET_FLAG" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet>
<Table1 diffgr:id="Table11" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<KCMC>XXX</KCMC>
</Table1>
<Table1 diffgr:id="Table12" msdata:rowOrder="1" diffgr:hasChanges="inserted">
<XNXQ>XXX</XNXQ>
</Table1>
<Table1 diffgr:id="Table13" msdata:rowOrder="2" diffgr:hasChanges="inserted">
<FS>XXX</FS>
</Table1>
<Table1 diffgr:id="Table14" msdata:rowOrder="3" diffgr:hasChanges="inserted">
<YSFS>XXX</YSFS>
</Table1>
<Table1 diffgr:id="Table15" msdata:rowOrder="4" diffgr:hasChanges="inserted">
<CET_FLAG>XXX</CET_FLAG>
</Table1>
</NewDataSet>
</diffgr:diffgram>
</DataSet>


反解的代码如下
byte[] byt = Encoding.UTF8.GetBytes(e.Item.Cells[8].Text.ToString());
MemoryStream ms = new MemoryStream();
ms.Write(byt, 0,byt.Length);

Response.Write(Encoding.UTF8.GetString(ms.ToArray()).Trim());


XmlSerializer ser = new XmlSerializer(typeof(DataSet));

DataSet wycjds = (DataSet) ser.Deserialize(new XmlTextReader(Encoding.UTF8.GetString(ms.ToArray()).Trim())); //因为不知道什么原因 会多一个?前面 如果使用.Trim()方法可以解决



然后抱错代码如下
System.UriFormatException: Invalid URI: The URI scheme is not valid. at System.Uri.Parse() at System.Uri..ctor(String uriString, Boolean dontEscape) at System.Uri..ctor(String uriString) at System.Xml.XmlResolver.ResolveUri(Uri baseUri, String relativeUri) at System.Xml.XmlTextReader..ctor(String url, XmlNameTable nt) at System.Xml.XmlTextReader..ctor(String url) at JW_BYSH.page_module.test1.flwy_DataGrid_ItemDataBound(Object sender, DataGridItemEventArgs e)
...全文
118 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxqq0824 2006-04-21
  • 打赏
  • 举报
回复
代码太多,不过有些东西是不能被序列化的,自己检查吧~~~

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧