Как изменить содержимое сжатого XML-файла?
У меня довольно большой XML
файл (примерно 800MB
); когда я сжимаю его, он становится примерно 24MB
, Это говорит мне, что в нем много повторяющихся данных, и что сжатие использует сжатие без потерь.
Теперь, работая с файлом в его текущем состоянии как XML
Файл занимает около 3 минут времени обработки. Я полагаю, что выполнение одного и того же процесса над сжатыми данными займет гораздо меньше времени.
Я еще не предпринимал никаких попыток изменить данные, так как я мало что нашел на веб-сайтах. В настоящее время я сжимаю данные, когда я закончу с ними для меньшего объема памяти, и распаковываю, когда мне нужно изменить. Это делается с помощью следующего кода:
private void Compress(FileInfo file) {
using (FileStream ifs = file.OpenRead())
using (FileStream ofs = File.Create($"{fi.FullName}.gz"))
using (GZipStream zip = new GZipStream(ofs, CompressionMode.Compress))
ifs.CopyTo(zip);
}
private void Decompress(FileInfo file) {
using (FileStream ifs = file.OpenRead())
string originalName = fi.FullName.Remoave(fi.FullName.Length - fi.Extension.Length);
using (FileStream ofs = File.Create(originalName))
using (GZipStream zip = new GZipStream(ifs, CompressionMode.Decompress))
zip.CopyTo(ofs);
}
Вопрос: есть ли способ изменить содержимое сжатого XML
или же TXT
файл без распаковки?
ПРИМЕЧАНИЕ. Внесенные изменения - это не просто удаление данных.
Другие приемлемые решения: Помимо манипулирования сжатыми данными, если есть быстрый способ распаковать, манипулировать, а затем повторно сжать, то это тоже приветствуется. В настоящее время мой метод составляет примерно 2 минуты с этим методом.