c# - 使用 XmlTextWriter 时 Stream 中的截断输出

标签 c#

 using (Stream responseStream = new MemoryStream())
                {
                    try
                    {
                        XmlTextWriter xmlWriter;
                        xmlWriter = new XmlTextWriter(@"D:\DEmo.txt", new UTF8Encoding(true));
                        xmlWriter.Formatting = Formatting.Indented;
                        xmlWriter.IndentChar = '\t';
                        xmlWriter.Indentation = 1;
                        xmlWriter.WriteStartDocument();
                        xmlWriter.WriteStartElement("D", "multistatus", "DAV:");
                        xmlWriter.WriteAttributeString("xmlns:M", "urn:schemas-microsoft-com:");
                        foreach (IWebDAVStoreItem item in store.Root.Items)
                        {
                            if (item is Server.Stores.DiskStore.WebDAVDiskStoreDocument)
                            {

                                ((Server.Stores.DiskStore.WebDAVDiskStoreDocument)item).AddProperties(xmlWriter);

                            }
                        }
                        xmlWriter.WriteEndElement();
                        xmlWriter.WriteEndDocument();

                        responseStream.Flush();

                        responseStream.Position = 0;
                        byte[] bytes = new byte[responseStream.Length];
                        responseStream.Read(bytes, 0, (int)responseStream.Length);
                        output = Encoding.ASCII.GetString(bytes); 
                        //output = (new StreamReader(responseStream)).ReadToEnd();
                        logger.Log(LogLevel.Warning, "\n" + output);
                        responseStream.Close();
                    }
                    catch(Exception ex) {
                        logger.Log(LogLevel.Warning, "\n" + ex.Message);
                    }
                }

我正在尝试从上面的代码生成 XML,但是从 MemoryStream 中读取的内容没有显示完整的 XML。无论 XML 有多大,XML 内容的最后一部分总是被截断。我不知道是什么继续。截断的输出看起来像这样。

     <?xml version="1.0" encoding="utf-8"?>
        <D:multistatus xmlns:M="urn:schemas-microsoft-com:" xmlns:D="DAV:">         
    <D:response>
            <D:href>/ANSI-ISO C++ Professional Programmers Handbook.pdf</D:href>
            <D:propstat>
                <D:status>HTTP/1.1 200 OK</D:status>
                <D:prop>        
<M:Win32CreationTime>2014-06-28T14:30:09</M:Win32CreationTime>
                    <M:Win32LastAccess>2014-06-28T14:30:09</M:Win32LastAccess>
                        <M:Win32LastModifiedTime>2014-06-28T14:30:09</M:Win32La

最佳答案

部分数据可能仍保留在 XmlTextWriter 的底层流缓冲区中。写完后你应该调用Close XmlTextWriter 的方法。如果你想稍后继续写入,但仍想确保所有数据都已写入,你可以使用 Flush .

关于c# - 使用 XmlTextWriter 时 Stream 中的截断输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24465410/

相关文章:

c# - 为什么在创建 const 字符串变量时不能使用 String.Empty?

C# 如何更新文件(保留旧数据)

c# - 使用 ASP.NET 重置密码时 token 无效

c# - DateTime.Compare 未按预期工作

c# - 如何以编程方式将 UI 元素正确添加到 iOS View 中?

c# - Asp.Net MVC - 参数与模型值的绑定(bind)!

c# - 如何使用 Ajax Control Toolkit (CalendarExtender) 验证字符串日期?

c# - 如何从类中返回字符串?

c# - 更改绑定(bind)属性时,ListView 分组不会更新

c# - C#中有什么可以用作数据库触发器的吗