Как прочитать ZIP-файл из потока файлов

1

У меня есть некоторые данные для хранения в XML файле. Легкая история! Чтобы сделать его нечитаемым, я его застегнул. Это должно работать нормально! Но я не могу прочитать содержимое xml!

Код, который я использовал для написания:

using( FileStream fileStream = new FileStream( filepath, FileMode.Create ) ) {
    using( GZipStream zipStream = new GZipStream( fileStream , CompressionMode.Compress ) ) {
        using( XmlWriter xmlWriter = XmlWriter.Create( zipStream, new XmlWriterSettings() { 
            Indent = true, 
            Encoding = Encoding.UTF8, 
            ConformanceLevel = ConformanceLevel.Fragment }
            ) ) {
                xmlWriter.WriteString( xmlDocument.OuterXml );
        }
    }
}

Код, который я читаю до сих пор:

using( FileStream fileStream = new FileStream( filepath, FileMode.Open ) )
{
    using( GZipStream zipStream = new GZipStream( fileStream , CompressionMode.Decompress ) )
    {
        using( XmlReader xmlReader = XmlReader.Create( zipStream, new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Fragment } ) )
        {
            xmlReader.MoveToContent();
            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load(xmlReader);
        }
    }
}

Но это работает не так, как ожидалось.

Файл xml выглядит довольно просто:

<data>
    <name>bill</name>
    <age>45</age>
</data>
<data>
    <name>john</name>
    <age>32</age>
</data>
<data>
    <name>bill</name>
    <age>68</age>
</data>

я бы хотел использовать

XmlNodeList xmlNodeList = xmlDocument.GetElementsByTagName( "data" );

Что мне не хватает? Спасибо за любые подсказки.

Теги:
filestream
xmlreader
gzipstream

1 ответ

1
Лучший ответ

Внутри вашей логики чтения замените

xmlDocument.Load(xmlReader); 

с

xmlDocument.LoadXml(xmlReader.ReadContentAsString());

Это сработало для меня

  • 0
    палец вверх - я думаю, что я был в этом туннеле во время работы ... спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню