读取zip包中xml文件的内容

用户名

我需要使用Stream读取.xml文件的内容(此处zip包中存在xml文件)。在下面的代码中,我需要在运行时获取文件路径(在这里,我已硬编码该路径以供参考)。请让我知道如何在运行时读取文件路径。

我试图使用字符串s = entry.FullName.ToString(); 但收到错误“找不到路径”。我也尝试过硬编码如下所示的路径。但是会出现相同的FileNotFound错误。

string metaDataContents;
using (var zipStream = new FileStream(@"C:\OB10LinuxShare\TEST1\Temp" + "\\"+zipFileName+".zip", FileMode.Open))
using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Read))
{
    foreach (var entry in archive.Entries)
    {
        if (entry.Name.EndsWith(".xml"))
        {
            FileInfo metadataFileInfo = new FileInfo(entry.Name);
            string metadataFileName = metadataFileInfo.Name.Replace(metadataFileInfo.Extension, String.Empty);
            if (String.Compare(zipFileName, metadataFileName, true) == 0)
            {
                using (var stream = entry.Open())
                using (var reader = new StreamReader(stream))
                {
                    metaDataContents = reader.ReadToEnd();
                    clientProcessLogWriter.WriteToLog(LogWriter.LogLevel.DEBUG, "metaDataContents : " + metaDataContents);
                }
            }
        }
    }
}

我还尝试使用Stream对象来获取.xml文件的内容,如下所示。但是在这里,我得到了错误“流不可读”。

Stream metaDataStream = null;
string metaDataContent = string.Empty;
using (Stream stream = entry.Open())
{                                
    metaDataStream = stream;
}
using (var reader = new StreamReader(metaDataStream))
{
    metaDataContent = reader.ReadToEnd();
}

请建议如何通过在运行时指定文件路径来使用Stream和StreamReader使用zip文件读取xml的内容

乔恩·斯基特

您的部分代码段失败,因为到达第一条using语句的末尾

using (Stream stream = entry.Open())
{                                
    metaDataStream = stream;
}

...流将被处置。这就是using陈述的重点。你应该罚款与此排序的代码,但在流是开放加载XML文件:

XDocument doc;
using (Stream stream = entry.Open())
{                                
    doc = XDocument.Load(stream);
}

那就是将其加载为XML ...如果您真的只想要文本,则可以使用:

string text;
using (Stream stream = entry.Open())
{                                
    using (StreamReader reader = new StreamReader(stream))
    {
        text = reader.ReadToEnd();
    }
}

再次注意,到达任一using语句的末尾之前这是如何读取的

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

读取zip存档文件中的内容

来自分类Dev

FTP读取zip文件中的xml文件

来自分类Dev

从从zip文件读取的XML文件中删除空格

来自分类Dev

使用Python直接从zip文件中读取xml文件

来自分类Dev

如何读取zip文件的内容并保存文件

来自分类Dev

C ++读取XML文件的内容

来自分类Dev

读取Zip文件内容而不用Java提取

来自分类Dev

如何在python中上传文件时读取内存中zip文件的内容?

来自分类Dev

从资源包中读取文件

来自分类Dev

从包中读取CSV文件

来自分类Dev

让 zip 从文件中读取源文件列表

来自分类Dev

修改zip包中的文件之一

来自分类Dev

Dart语言和XML包:读取节点(文本内容)

来自分类Dev

r光栅在zip文件中读取.vrt

来自分类Dev

从Helm模板中的Zip文件读取

来自分类Dev

读取特定程序包中文件的内容

来自分类Dev

在Dart中读取XML文件

来自分类Dev

在C ++中读取XML文件

来自分类Dev

在Perl中读取XML文件

来自分类Dev

读取Java中的xml文件

来自分类Dev

在 PySpark 中读取 XML 文件

来自分类Dev

使用F#和Open XML SDK读取Excel文件中的单元格内容

来自分类Dev

通过XElement从XML文件中读取C#值相关的内容

来自分类Dev

获取包中的html文件的内容

来自分类Dev

读取XML文件并创建与XML内容匹配的对象列表

来自分类Dev

读取XML文件并创建与XML内容匹配的对象列表

来自分类Dev

fget逐行读取文件中的内容

来自分类Dev

如何在QML中读取文件内容

来自分类Dev

读取json文件php中的内容