0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
public static DataTable DeserilazeDataTable(string schema, string data)
{
DataTable tbl = new DataTable();
if (!string.IsNullOrEmpty(schema))
using (Stream stream = new MemoryStream())
{
byte[] bufer = GetBytes(schema);
stream.Write(bufer, 0, bufer.Length);
stream.Position = 0;
tbl.ReadXmlSchema(stream);
}
if (!string.IsNullOrEmpty(data))
using (Stream stream = new MemoryStream())
{
byte[] bufer = GetBytes(data);
stream.Write(bufer, 0, bufer.Length);
stream.Position = 0;
tbl.ReadXml(stream);
}
return tbl;
}
public static byte[] GetBytes(string str)
{
if (string.IsNullOrEmpty(str))
return new byte[0];
char[] ch = str.ToCharArray();
byte[] bufer = new byte[ch.Length];
for (int i = 0; i < ch.Length; i++)
bufer[i] = (byte)ch[i];
return bufer;
}
//также имеются методы для сериализации, работающие также
public static string SerilazeDataTable(DataTable table)
public static string SerilazeDataTableShame(DataTable table)
public static string GetString(byte[] bufer)
Вот такой десериализатор таблицы в Xml нашел в проэкте.
Запостил:
sven47 ,
11.11.2009 (Updated 24.03.2018 )
стыд таблицы? o_O
Можно заменить метод
public static byte[] GetBytes(string str)
{
if (string.IsNullOrEmpty(str)) return new byte[0];
char[] ch = str.ToCharArray();
byte[] bufer = new byte[ch.Length];
for (int i = 0; i < ch.Length; i++) bufer[i] = (byte)ch[i];
return bufer;
}
на более короткий и простой
public static byte[] GetBytes(string str)
{
if (string.IsNullOrEmpty(str)) return new byte[0];
return System.Text.Encoding.Default.GetBytes(st r);
}