试图序列一个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);
}

希望这是有用的人。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top