Как изменить содержимое сжатого 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 минуты с этим методом.

0 ответов

Другие вопросы по тегам