Silverlight XML Save 不会覆盖整个文件

Posted

技术标签:

【中文标题】Silverlight XML Save 不会覆盖整个文件【英文标题】:Silverlight XML Save does not overwrite the entire file 【发布时间】:2012-06-14 11:37:23 【问题描述】:

解释我的问题的最好方法是举个例子。

我有一个包含一些元素的 Xml 文件。当我删除一个元素时,我再次保存文件并出现此问题:

保存前

    <?xml version="1.0" encoding="utf-8"?>
<ElementTree>
  <Elements1 />
  <Elements2>
    <Element Name="TestElement" ID="4efa7cc9-a89a-429b-81f4-b00cde729f24" />
  </Elements2>
  <Elements3 />
</ElementTree>

保存后

<?xml version="1.0" encoding="utf-8"?>
<ElementTree>
  <Elements1 />
  <Elements2 />
  <Elements3 />
</ElementTree>D="4efa7cc9-a89a-429b-81f4-b00cde729f24" />
  </Elements2>
  <Elements3 />
</ElementTree>

我怀疑它在做什么:它一直在写文本,直到它到达要保存的文本的末尾,然后它就停止了。它不会删除流中最后一个字符之后仍写入文件中的文本。

我该如何解决这个问题?

【问题讨论】:

我以前在其他情况下也遇到过类似的问题。您可以在创建新文件之前删除现有文件吗? 在 Emo 的回答中查看我的评论! 【参考方案1】:

确保在打开它时replace the existing file 并正确关闭流。

【讨论】:

using (var stream = file.OpenFile("Films.xml", FileMode.Open, FileAccess.Write)) 将 FileMode.Open 更改为 FileMode.Create 解决了这个问题。非常感谢! 没问题。下次您提出问题时,请确保发布您正在使用的代码。这会使回答这个问题变得容易得多。

以上是关于Silverlight XML Save 不会覆盖整个文件的主要内容,如果未能解决你的问题,请参考以下文章

Silverlight Xaml 覆盖控件的 IsEnabled 属性

覆盖 Django InlineModelAdmin 上的 save_model

xml Silverlight的示例clientaccesspolicy.xml

Silverlight XML 编辑器/语法高亮

Silverlight网络应用死亡的白色屏幕

Silverlight 到 WCF 跨域异常,但正在成功读取 clientaccesspolicy.xml