在Windows应用商店应用中编辑XML文件

moh*_*ris 7 c# xml xmldocument windows-store-apps

我在Windows商店中创建一个应用程序,并在创建的xml文件中写入xml时遇到问题.我在Windows应用商店应用中遵循了这个编辑XML文件,但它对我不起作用.

我想在按钮点击时在我的xml文件中写入这个xml.

这个东西的任何替代方式..

<drink>
    <drinkImage>ck.png</drinkImage>
    <drinkTitle>COKE</drinkTitle>
    <drinkDescription>(1793-1844)</drinkDescription>
  </drink>
Run Code Online (Sandbox Code Playgroud)

我当前的文件是这样的:

   <?xml version="1.0" encoding="utf-8" ?>
    <drinks>
      <drink>
        <drinkImage>pepsi.png</drinkImage>
        <drinkTitle>PEPSI</drinkTitle>
        <drinkDescription>(1793-1844)</drinkDescription>
      </drink>
**<here I Want above xml on button click>**
    </drinks>
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

namespace DrinksApp
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class coke : Page
    {
        public coke()
        {
            this.InitializeComponent();

        }
        XmlDocument dom = new XmlDocument();


        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.Frame.Navigate(typeof(softdrinks));
        }

        private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
               XDocument xmlDoc = XDocument.Load("favourite//fav.xml");
        xmlDoc.Root.Add(new XElement("drink",
                    new XAttribute("drinkImage","ck.png"),
                    new XAttribute("drinkTitle","PEPSI"),
                    new XAttribute("drinkDescription","NONE")

                ));



xmlDoc.Save(xmlDoc); **//This isn't working in windows store ..**
            }



        }




    }
}
Run Code Online (Sandbox Code Playgroud)

我已经有一个如上所述的xml文件:

Tra*_*man 2

这是在控制台应用程序中编写的,但它应该仍然适用于 Windows 应用商店应用程序。

      XDocument xdoc = XDocument.Load("fa.xml");

        xdoc.Root.Add(new XElement("drink",
            new XElement("drinkImage", "Img.png"),
            new XElement("drinkTitle", "NewDrink"),
            new XElement("drinkDescription", "HelloWorld")));

        xdoc.Save("fa.xml");
Run Code Online (Sandbox Code Playgroud)

输出:

<?xml version="1.0" encoding="utf-8"?>
<drinks>
  <drink>
    <drinkImage>pepsi.png</drinkImage>
    <drinkTitle>PEPSI</drinkTitle>
    <drinkDescription>(1793-1844)</drinkDescription>
  </drink>
  <drink>
    <drinkImage>Img.png</drinkImage>
    <drinkTitle>NewDrink</drinkTitle>
    <drinkDescription>HelloWorld</drinkDescription>
  </drink>
</drinks>
Run Code Online (Sandbox Code Playgroud)

您的原始代码非常接近您想要的。您使用了“XAttribute”而不是“XElement”。这不是问题,但输出看起来像这样......

<drink drinkImage="ck.png" drinkTitle="PEPSI" drinkDescription="NONE" />
Run Code Online (Sandbox Code Playgroud)

你的实际问题是保存。XDoucment.Save 接受流、文本编写器、xml 编写器或字符串。在此示例中,我使用了字符串路径。在这里查看更多内容: https://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument (v=vs.110).aspx

编辑:尝试使用文件流:

var xmlFile = await StorageFile.GetFileFromPathAsync("fav.xml");
using (var fileStream = await xmlFile.OpenStreamForWriteAsync())
{
   xdoc.Save(fileStream);
}
Run Code Online (Sandbox Code Playgroud)