DataSet读取出来有如下字段
[UserInfo],[Organize],[WorkID],[Team],[UserType],[LoginCode],[UserName],[PWD],[Phone],[Re]其中Team和Phone为Null,在pDS中可以检查到这两个Column的存在但是通过string mXML = System.Text.Encoding.UTF8.GetString(mDSBT);看不到这两个字段
如果不是为null的字段均能看到,我想要让无论是否为null的字段都被系列化出来,如何实现?
因为反系列化成DataSet的时候如果看不到Team和Phone的话,读取DataSet字段的时候就会有问题系列化代码如下:
public static byte[] DataSetSerialize(System.Data.DataSet pDS, bool pCompress)
{
try
{
System.IO.MemoryStream unMS = new System.IO.MemoryStream();
pDS.WriteXml(unMS); unMS.Seek(0, System.IO.SeekOrigin.Begin); byte[] mDSBT = unMS.ToArray(); string mXML = System.Text.Encoding.UTF8.GetString(mDSBT); //这里转换成XML,XML内容如下面所示 return mDSBT;
}
catch (NullReferenceException NullEx)
{
throw NullEx;
}
catch (Exception Ex)
{
throw Ex;
}
}
系列化后的XML内容如下:(XML没有了Team和Phone两个字段)<NewDataSet>
<Table>
<UserInfo>b6ed2733-a2f4-43f3-97f2-1d1a6b51635a</UserInfo>
<Organize>6d809ca9-fe49-443c-b120-0809742ef069</Organize>
<UserType>2</UserType>
<LoginCode>wzlda</LoginCode>
<UserName>林大安</UserName>
<PWD>18</PWD>
<Re />
</Table>
</NewDataSet>
[UserInfo],[Organize],[WorkID],[Team],[UserType],[LoginCode],[UserName],[PWD],[Phone],[Re]其中Team和Phone为Null,在pDS中可以检查到这两个Column的存在但是通过string mXML = System.Text.Encoding.UTF8.GetString(mDSBT);看不到这两个字段
如果不是为null的字段均能看到,我想要让无论是否为null的字段都被系列化出来,如何实现?
因为反系列化成DataSet的时候如果看不到Team和Phone的话,读取DataSet字段的时候就会有问题系列化代码如下:
public static byte[] DataSetSerialize(System.Data.DataSet pDS, bool pCompress)
{
try
{
System.IO.MemoryStream unMS = new System.IO.MemoryStream();
pDS.WriteXml(unMS); unMS.Seek(0, System.IO.SeekOrigin.Begin); byte[] mDSBT = unMS.ToArray(); string mXML = System.Text.Encoding.UTF8.GetString(mDSBT); //这里转换成XML,XML内容如下面所示 return mDSBT;
}
catch (NullReferenceException NullEx)
{
throw NullEx;
}
catch (Exception Ex)
{
throw Ex;
}
}
系列化后的XML内容如下:(XML没有了Team和Phone两个字段)<NewDataSet>
<Table>
<UserInfo>b6ed2733-a2f4-43f3-97f2-1d1a6b51635a</UserInfo>
<Organize>6d809ca9-fe49-443c-b120-0809742ef069</Organize>
<UserType>2</UserType>
<LoginCode>wzlda</LoginCode>
<UserName>林大安</UserName>
<PWD>18</PWD>
<Re />
</Table>
</NewDataSet>
pDS.WriteXml("myxml.xml", XmlWriteMode.WriteSchema);
pDS.ReadXml("myxml.xml",XmlReadMode.ReadSchema):
有其它办法吗?
SoapFormatter sf=new SoapFormatter();
sf.Serialize(s,myds);
s.Seek(0,SeekOrigin.Begin);
或用XmlSerializer
http://blog.csdn.net/gloomyboyo/archive/2006/08/07/1029678.aspx
sf.Serialize(unMS, pDS);这种方式我也不划算,系列化之后有4193 字节,我原有的才308 字节,网络传输上开销太大了,我们是通过GPRS通讯的,因此字节流大小需要重点考虑
DataSet ds = new DataSet();
ds.WriteXml(@"C:\aaa.xml", XmlWriteMode.WriteSchema);