如何在 c# Windows 8 应用中更新现有 XML 文件的元素

本文关键字:XML 文件 元素 更新 Windows 应用 | 更新日期: 2024-10-30 15:29:03

我有一个XML文件位于Assets文件夹中。尝试使用 Linq 读取文件时,我没有遇到任何问题。但是,当我想写入该文件时,我没有看到任何错误,并且目标元素永远不会更新。

我的代码如下:

private static readonly string mealsXMLPath = Path.Combine(Package.Current.InstalledLocation.Path, "Assets/meals.xml");
    private XDocument loadedData;

在构造函数中,我有初始化代码:

loadedData = XDocument.Load(mealsXMLPath);

我用来更新现有元素值的实际代码在这里

public async void UpdateQuantity(Dictionary<int, int> orderdetails)
        {
            XDocument xmlFile = XDocument.Load(mealsXMLPath);
            foreach(var key in orderdetails.Keys)
            {
                XElement upd = (from order in xmlFile.Descendants("Meal")
                                where order.Element("ID").Value == key.ToString()
                                select order).Single();
                upd.Element("Avaibility").Value = (Convert.ToInt32(upd.Element("Avaibility").Value) - orderdetails[key]).ToString();

            }
        }

我尝试了其他内置方法,例如xdoc.save("path")xml...Create(..)。但似乎没有一个在C# Windows 8应用程序中工作。

如何在 c# Windows 8 应用中更新现有 XML 文件的元素

你必须

将文档保存到一个可写的目录中:

using (var stream = await (await ApplicationData.Current.LocalFolder.CreateFileAsync(System.IO.Path.GetFileName(mealsXMLPath))).OpenAsync(FileAccessMode.ReadWrite))
{
    xmlFile.Save(stream.AsStreamForWrite());
}