FTP 读取 zip 文件中的 xml 文件

本文关键字:文件 xml FTP zip 读取 | 更新日期: 2023-09-27 18:35:23

>我有一个包含zip文件的FTP,并且每个zip文件都有一个与zip文件同名的xml文件。

我想阅读这些 xml 文件。

几乎做了所有事情,但现在我有一个问题,这不是语法问题,而是方法问题。

问题:

我应该将这些 zip 字段下载到 FTP 文件夹之外的文件夹中吗? 然后解析其中的 XML 文件?

或者有一种更好的方法可以直接访问 XML 文件,而无需下载 zip 文件。

我正在使用 .net 4.5

非常感谢

FTP 读取 zip 文件中的 xml 文件

您可以仅在内存上打开和解压缩zip条目,您可以下载文件并将其保存在MemoryStream上,然后将其传递给ZipArchive(甚至直接传递FTP Stream,但我不推荐它)。下面是在内存上打开 zip 容器的小示例:

        var ms = new MemoryStream(file);
        var archive = new ZipArchive(ms, ZipArchiveMode.Read);
        var entry=archive.GetEntry("Sample.XML");
        var doc=XDocument.Load(entry.Open());

这是从FTP主机下载zip存档并打开其条目的完整示例,我使用ftp.dll库进行FTP通信,您可以通过 nuget 获取

PM> Install-Package Ftp.dll

在示例条目中Stream图像文件(横幅.jpg),但打开 XML 文件将是相同的(如上所述);

        var ms = new MemoryStream();
        var ftp = new Limilabs.FTP.Client.Ftp();
        ftp.Connect("ftp.microsoft.com");
        ftp.Login("anonymous");
        ftp.Download("softlib/MSLFILES/aspwebwiz2k.zip", ms);
        var archive = new ZipArchive(ms, ZipArchiveMode.Read);
        var entry=archive.GetEntry("banner.jpg");

如果"不下载"是指不将它们保存在系统上并直接读取它们,那么是的,有一种方法可以做到这一点。如果这意味着甚至不将其下载到您的系统中并直接读取服务器上存在的 zip 单独内容,那么据我所知,没有。

如果您的意思是前者,那么您可以将内容下载到临时内存中,您可以通过MemoryStream类访问该内存并直接从那里读取内容,而无需将其保存在系统或hardisk中

内存流的详细信息