当前位置: 首页 > 知识库问答 >
问题:

如何将MemoryStream从Google Drive Get请求转换为XML文件C#?

孔逸春
2023-03-14

我在。NET Core2中工作,我正在使用google drive v3 API并获取XML文件。我得到了一个MemoryStream,但无法将MemoryStream读到XMLDocument。我已经尝试了几个文件,内存流的大小与文件大小相匹配,所以我相信我确实得到了数据。如何将MemoryStream转换为XMLDocument?或者可以解析为XML的字符串?

我已经尝试将流加载到xml文档和文本阅读器中。文本读取器返回一个空字符串,xml加载器表示未找到父节点。

//Fetch the file from Google Drive
var request = _driveService.Files.Get(fileId);
var stream = new System.IO.MemoryStream();
request.Download(stream);

//How I Try and parse to string
StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();

//How I try to load to xml
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(stream);

共有1个答案

陶睿
2023-03-14

对于XMLDocument,听起来您得到的可能不需要稍加修改就不是有效的XML,所以您应该从基于MemoryStream的实现开始,看看您从服务中得到了什么。

要使其工作,您需要“倒带”流。流有一个“当前位置”的概念,就像游标一样,像download这样的方法传统上在将数据加载到流中后,将游标留在数据的末尾。有时这并不重要,比如当您使用FileStream将数据直接写入文件时,但是如果您将数据加载到MemoryStream中,然后想立即读取它,则需要首先使用stream.seek(0,seekorigin.begin)将光标重置回流的开头。

 类似资料:
  • 给我最好的方式来写代码。 如何在C#中将XML文件转换为CSV文件,只显示以下标记: 输出CSV文件格式应如下所示:

  • 问题内容: 我有一个XML文件 我必须将此XML转换为CSV文件。我听说我们可以使用XSLT进行此类操作。如何在Java中(带有/不带有XSLT)执行此操作? 问题答案: 用伪代码: 这个快速的小循环将在每行的末尾写一个逗号,但是我敢肯定您可以弄清楚如何删除它。 为了实际解析XML,我建议使用JDOM。它具有非常直观的API。

  • 我有如下XML文件: 如何快速将其转换为C#类以通过LINQ使用access数据?我必须为任何XML文件情况手动编写类吗?那么JSON格式呢?

  • 我向我的flask应用所在的服务器发出了python post请求。它运行良好,我能够获得所需的数据。 但我想用POSTMAN测试API。我无法做到这一点,因为在某种程度上我对邮递员并不熟悉。 下面是我的python代码。 我正在努力解决这样一个问题:我试图发布到服务器上的数据和文件应该是原始json还是表单数据,或者是正文的x-www-form-urlencoded部分。还有实际的结构应该是什么

  • 问题内容: 我有几个要从Dos转换为Unix的文件。是否有任何API或方法可以帮助我做到这一点? 问题答案: 有Linux工具可以做到这一点(例如)。 在Java中,可以使用。 DOS 用于线路终止,而UNIX使用单个。 因此,不存在,没有API。是的,这很容易做到。

  • 我试图让下面的命令行使用请求库在Python中工作: curl在Anaconda Prompt中从包含test_GetCapabilities.xml文件的目录中执行时立即返回所需的响应。但是当我运行下面的Python脚本时,发布请求不起作用。 上述代码在大约一分钟后超时,并给出以下堆栈: Runfile('C:/Python/SOAP_curl.py', wdir='C:/Python')Tra