XmlDocument.WriteTo截断结果文件
-
25-09-2019 - |
题
试图序列一个XmlDocument到文件中。 XmlDocument的是相当大的;然而,在调试器,我可以看到InnerXml酒店所有的XML BLOB的它 - 它不会被截断有
下面是写入我的如下的对象到文件的代码:
// Write that string to a file.
var fileStream = new FileStream("AdditionalData.xml", FileMode.OpenOrCreate, FileAccess.Write);
xmlDocument.WriteTo(new XmlTextWriter(fileStream, Encoding.UTF8) {Formatting = Formatting.Indented});
fileStream.Close();
这是这里生产的文件只写出来这样一行5760 - 它在标签的中间居然截断!
任何人有任何想法,为什么这会截断在这里?
<强>更新强>我发现这个问题的根源。我没有关闭XML文本编写关闭文件流之前! D'哦!
解决方案
在XmlTextWriter的未正确关闭。 Woops!
其他提示
您可以尝试关闭之前清空流。如果自动冲洗是真的,我认为它会在关闭()反正满脸通红,但也可能是值得一试:
// Write that string to a file.
var fileStream = new FileStream("AdditionalData.xml", FileMode.OpenOrCreate, FileAccess.Write);
xmlDocument.WriteTo(new XmlTextWriter(fileStream, Encoding.UTF8) {Formatting = Formatting.Indented});
fileStream.Flush();
fileStream.Close();
它的方式方法方式...原来有人问之后,却出现了对谷歌搜索结果。
我到今天类似的事情去了,想分享我的答案(下一个不幸的灵魂谁面临这样的困惑)。
我使用一个StreamWriter(SW)与一个MemoryStream(MS)以一定的间隔,以保持在存储器中的数据,然后冲洗出的FILESTREAM(FS)。
所以我正在做
sw.WriteLine(DateTime.Now.ToString("u").Replace("Z", "") & ": " & entry)
和然后毕竟是说,做
ms.WriteTo(fs)
fs.Flush()
fs.Close()
ms.Close()
问题是,我没有第一冲洗的StreamWriter到的MemoryStream
涂改这解决了我的问题。
sw.Flush()
ms.WriteTo(fs)
fs.Flush()
fs.Close()
ms.Close()
我今天面对这一问题,当代码为如下:
XmlTextWriter writer = new XmlTextWriter("IdP.xml", null);
writer.Formatting = Formatting.Indented;
xmlElement.WriteTo(writer);
问题被固定时我改变了它如下:
using (XmlTextWriter writer = new XmlTextWriter("IdP.xml", null))
{
writer.Formatting = Formatting.Indented;
xmlElement.WriteTo(writer);
}
希望这是有用的人。
不隶属于 StackOverflow