Прочитать и обработать удаленный zip-файл xml в C# - PullRequest
0 голосов
/ 11 февраля 2020

Как правильно читать и обрабатывать удаленный zip-файл xml в C#?

Вот что я пытаюсь:

private Task UpdateLegalContractors(string url)
{
    url = @"https://srv-file7.gofile.io/download/k67HY4/sampleOpenData.zip";

    string res = string.Empty;

    using (var file = File.OpenRead(url))
    using (var zip = new ZipArchive(file, ZipArchiveMode.Read))
    {
        foreach (var entry in zip.Entries)
        {
            using (var stream = entry.Open())
            using (var reader = XmlReader.Create(stream))
            {
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            res += reader.Name;
                            break;
                        case XmlNodeType.XmlDeclaration:
                            res += "<?xml version=\"1.0\" encoding=\"windows - 1251\"?>";
                            break;
                    }
                }
            }
        }
    }

    var stop = 0;

    return null;
}

Решение было предложено в этот вопрос.

Для меня решение выдает ошибку при достижении линии using (var file = File.OpenRead(url)). Ошибка говорит следующее:

{"Формат данного пути не поддерживается."} ​​

enter image description here

Что я должен изменить, чтобы решение работало?

1 Ответ

1 голос
/ 11 февраля 2020

Проблема здесь: https://srv-file7.gofile.io/download/k67HY4/sampleOpenData.zip. File класс работает только с локальными файлами. Сначала вы должны загрузить этот файл в локальное хранилище, а затем открыть его. Например, используя решение из этого ответа .

Решение для прямой памяти:

WebClient wc = new WebClient();
using (MemoryStream stream = new MemoryStream(wc.DownloadData("URL")))
{
    using (var zip = new ZipArchive(stream, ZipArchiveMode.Read))
    {
       ...
    }
}
...