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)
这是在控制台应用程序中编写的,但它应该仍然适用于 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)