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

时间:2016-01-30 13:13:56

标签: c# xml linq uwp windows-store

因此,我尝试打开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的方式,但我每次都得到这个,所以我猜测这对我打开/关闭流的方式一定是个问题。我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:2)

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

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

我已经看到这解决了旧Windows Phone问题中的类似问题。以下是其中一些:1。Appending new XElement adds an entire XML to existing xml in stream,2。updating an existing xml file in Windows Phone