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