使用流保存 xml 文件会导致根元素重复

本文关键字:元素 保存 xml 文件 | 更新日期: 2023-09-27 18:32:42

所以我正在尝试打开一个xml文件,将XElement添加到根元素,然后保存它。除了我的 C# 代码:

StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync("UserPinouts.tpack", CreationCollisionOption.OpenIfExists);
using (var stream = await file.OpenStreamForWriteAsync())
{
    XDocument doc = XDocument.Load(stream);
    doc.Root.Add(new XElement(XElement.Parse(CurrentPinOut)));
    doc.Save(stream);
    Debug.WriteLine(doc.ToString());
    stream.Flush();
}

给了我以下 xml 文件:

<?xml version="1.0" encoding="utf-8" ?>
<RootElement>
    <XElement1/>
</RootElement>
<?xml version="1.0" encoding="utf-8" ?>
<RootElement>
    <XElement1/>
    <XElement2/>
</RootElement>

而不仅仅是第二部分。我尝试更改添加 XElement 的方式,但我每次都得到这个,所以我猜一定是我打开/关闭流的方式有问题。我该如何解决这个问题?

使用流保存 xml 文件会导致根元素重复

尝试将流位置重置为开头,就在调用方法之前Save()

stream.Position = 0;
doc.Save(stream);

我已经看到这在旧的Windows Phone问题中解决了类似的问题。这些是其中的一些:1.附加新的XElement将整个XML添加到流中的现有xml,2.更新Windows Phone中的现有XML文件