Мне удалось сжать XML-поток DataSet с помощью сжатия gzip в .NET 2.0.
Вот сообщение в блоге, которое я сделал несколько лет назад об этом:
Локальное сохранение наборов данных со сжатием
... и вот код, который я добавил в частичный класс моего DataSet для записи сжатого файла (в блоге тоже есть код чтения):
public void WriteFile(string fileName)
{
using (FileStream fs = new FileStream(fileName, FileMode.Create))
{
Stream s;
if (Path.GetExtension(fileName) == ".cmx")
{
s = new GZipStream(fs, CompressionMode.Compress);
}
else if (Path.GetExtension(fileName) == ".cmz")
{
s = new DeflateStream(fs, CompressionMode.Compress);
}
else
{
s = fs;
}
WriteXml(s);
s.Close();
}
}
Обратите внимание, что в этом коде используются разные схемы сжатия в зависимости от расширения файла. Это было чисто для того, чтобы я мог проверить одну схему против другой с помощью моего DataSet.