【问题标题】:How to read zipped xml from file stream如何从文件流中读取压缩的 xml
【发布时间】:2014-08-19 15:01:59
【问题描述】:

我有一些数据要存储在 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" );

我错过了什么?感谢您的任何提示。

【问题讨论】:

    标签: c# xml filestream xmlreader gzipstream


    【解决方案1】:

    在您的阅读逻辑中 替换

    xmlDocument.Load(xmlReader); 
    

    xmlDocument.LoadXml(xmlReader.ReadContentAsString());
    

    这对我有用

    【讨论】:

    • thumbs up - 我想我工作时在那个隧道里……谢谢!
    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多