Windows runtime 将较短的流写入存储文件

Windows runtime 将较短的流写入存储文件,windows-runtime,xml-serialization,storagefile,Windows Runtime,Xml Serialization,Storagefile,我有一个包含XML的存储文件。我从存储文件中读取XML,然后编辑它,然后使用以下代码再次将其保存到存储文件中: using (var writeStream = await storageFile.OpenStreamForWriteAsync()) { xDocument.Save(writeStream, SaveOptions.None); } 然而,当我把内容缩短时(如从 <Node> <Child>This is a verrrrrryyy l

我有一个包含XML的存储文件。我从存储文件中读取XML,然后编辑它,然后使用以下代码再次将其保存到存储文件中:

using (var writeStream = await storageFile.OpenStreamForWriteAsync())
{
    xDocument.Save(writeStream, SaveOptions.None);
}
然而,当我把内容缩短时(如从

<Node>
    <Child>This is a verrrrrryyy long text</Child>
<Node>

这是一篇很长的文章


这是短的
磁盘上的结果如下所示:

<Node>
    <Child>This is short</Child>
<Node>rrryyy long text</Child>
<Node>

这是短的
rrryyy长文本
显然,流只在文件中写入新字节,而保留旧字节不变,因此在我下次尝试打开它时会导致无效的XML,因此这可能不是正确的保存方式


我应该如何保存它?

解决方案是截断流:

使用(var writeStream=wait f.OpenStreamForWriteAsync())
{ 
if(writeStream.CanSeek&&writeStream.Length>0)
writeStream.SetLength(0);
_Save(writeStream、SaveOptions.None);
}

读取数据时是否对其进行反序列化?读取存储文件时进行编码:
XmlDocument XmlDocument=wait XmlDocument.LoadFromFileAsync(存储文件)
XDocument XDocument=XDocument.Parse(xmlDocument.GetXml())我建议您在下面的链接中研究序列化和反序列化:-我没有遇到任何像您这样的问题。谢谢您的提示,但我不是在读/写一个可序列化的类,只是一个xml。关于如何在该场景中保存它的任何线索?解决方案是截断流:
使用(var writeStream=wait f.OpenStreamForWriteAsync()){if(writeStream.CanSeek&&writeStream.Length>0)writeStream.SetLength(0);\u xml.save(writeStream,SaveOptions.None)}
<Node>
    <Child>This is short</Child>
<Node>rrryyy long text</Child>
<Node>