Вы можете использовать SimpleStorage, фреймворк на основе XML-хранилища, который я создал. Вы можете скачать его здесь.
Скачать SimpleStorage
Это было сделано для решения таких проблем, как ваша. Чтобы сделать то, что вы хотите, вам нужна одна строка кода:
SrcStorage.Ensure('Data').Filter('gzip').AsBinary.LoadFromStream(MemoryStream);
Мало того, что base64 автоматически кодирует данные, но также поддерживает фильтр, чтобы вы могли распаковать на лету.
Итак, с тремя строками кода вы можете сделать все это:
SrcStorage := CreateStorage('BinaryStorage');
SrcStorage.Ensure('Data').Filter('gzip').AsBinary.LoadFromStream(MemoryStream);
SrcStorage.SaveToFile('Data.xml');
Он использует OmniXML, очень хорошую библиотеку Delphi XML. Вы можете найти всю информацию на странице загрузки.