XmlSerializer 反串时说格式不对
串行化的代码如下:
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)