gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:42 25 4
gpt4 key购买 nike

 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/

25 4 0