[C#] Uwa - 读写Xml文件 [英] [C#]Uwa - Read and Write Xml File

查看:66
本文介绍了[C#] Uwa - 读写Xml文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

早安,每个人,


有一天花时间尝试用通用应用程序读取和写入xml文件。



我能够使用XDocument读取xml文件然后循环结果但是我能够写入文件,因为修改不是存储...


请你有一个例子可以做到吗?



最好的问候


Andrea

解决方案

Hello Andrea,


无论如何,要将Xml写入 文件,请将XDocument.Save()用于可写流。


XDocument.Save方法

https://msdn.microsoft.com/en-us/library/windows/apps/cc838476( v = vs.105).aspx


例如


MainPage.xaml的主体;


< pre class ="prettyprint">< StackPanel Margin =" 0,16,0,0">
< StackPanel Margin =" 8">
< TextBlock>场景1:将XML导出到用户通过FileSavePicker选择的文件。< / TextBlock>
< Button Content =" Export XML"点击= QUOT; Button_Click_Export"余量= QUOT; 8英寸; />
< TextBlock x:Name =" StatusTextExport"余量= QUOT; 8,0,0,0" TextWrapping = QUOT;包覆与QUOT; IsTextSelectionEnabled = QUOT;真" />
< / StackPanel>
< StackPanel Margin =" 8">
< TextBlock>场景2:将XML保存到应用的LocalFolder中的文件。< / TextBlock>
< Button Content =" Save XML"点击= QUOT; Button_Click_LocalFolder"余量= QUOT; 8英寸; />
< TextBlock x:Name =" StatusTextLocalFolder"余量= QUOT; 8,0,0,0" TextWrapping = QUOT;包覆与QUOT; IsTextSelectionEnabled = QUOT;真" />
< / StackPanel>
< / StackPanel>

要附加到MainPage.xaml.cs的代码;

 private async void Button_Click_Export(object sender,RoutedEventArgs e)
{
var picker = new FileSavePicker();
picker.FileTypeChoices.Add(" XML files",new string [] {" .xml"});
picker.SuggestedFileName =" HelloWorld" ;;

var file = await picker.PickSaveFileAsync();
if(file!= null)
{
SaveXML_HelloWorld(file);
StatusTextExport.Text ="导出到" + file.Path;
}
}
private async void Button_Click_LocalFolder(object sender,RoutedEventArgs e)
{
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(" HelloWorld。 xml",CreationCollisionOption.ReplaceExisting);
if(file!= null)
{
SaveXML_HelloWorld(file);
StatusTextLocalFolder.Text ="保存到" + file.Path;
}
}
private async void SaveXML_HelloWorld(StorageFile file)
{
XDocument xdoc = new XDocument();

#region撰写XML
XElement xroot = new XElement(" Hello");
xdoc.AddFirst(xroot);

XElement xsub = new XElement(" World");
xroot.AddFirst(xsub);

xsub.AddFirst(new XText("Hello World!"));
#endregion

#region使用(var stream = await file.OpenAsync(FileAccessMode.ReadWrite))将XML保存到文件

{
xdoc 保存(stream.AsStreamForWrite());
await stream.FlushAsync();
stream.Size = stream.Position;
}
#endregion
}

参考资料


使用选择器保存文件

https:// msdn.microsoft.com/en-us/windows/uwp/files/quickstart-save-a-file-with-a-picker


ApplicationData.LocalFolder


https://msdn.microsoft.com /en-us/library/windows/apps/windows.storage.applicationdata.localfolder.aspx







Good Morning Everybody,

it's one day that spend time for try read and write a xml file with a Universal App.

Im able to read the xml File using XDocument and then looping the results but Im able to write the file, because the modification are not store ...

please kindly could you have an example for to do that ?

Best Regards

Andrea

解决方案

Hello Andrea,

In anyway, to write Xml to file, use XDocument.Save() for writable streams.

XDocument.Save Method
https://msdn.microsoft.com/en-us/library/windows/apps/cc838476(v=vs.105).aspx

e.g.

Body of MainPage.xaml;

            <StackPanel Margin="0,16,0,0">
                <StackPanel Margin="8">
                    <TextBlock>Scenario1: Export XML to the file that user chose by FileSavePicker.</TextBlock>
                    <Button Content="Export XML" Click="Button_Click_Export" Margin="8"/>
                    <TextBlock x:Name="StatusTextExport" Margin="8,0,0,0" TextWrapping="Wrap" IsTextSelectionEnabled="True"/>
                </StackPanel>
                <StackPanel Margin="8">
                    <TextBlock>Scenario2: Save XML to a file in app's LocalFolder.</TextBlock>
                    <Button Content="Save XML" Click="Button_Click_LocalFolder" Margin="8"/>
                    <TextBlock x:Name="StatusTextLocalFolder" Margin="8,0,0,0" TextWrapping="Wrap" IsTextSelectionEnabled="True"/>
                </StackPanel>
            </StackPanel>

Code to be appended to MainPage.xaml.cs;

       private async void Button_Click_Export(object sender, RoutedEventArgs e)
        {
            var picker = new FileSavePicker();
            picker.FileTypeChoices.Add("XML files", new string[] { ".xml" });
            picker.SuggestedFileName = "HelloWorld";

            var file = await picker.PickSaveFileAsync();
            if (file != null)
            {
                SaveXML_HelloWorld(file);
                StatusTextExport.Text = "Exported to " + file.Path;
            }
        }
        private async void Button_Click_LocalFolder(object sender, RoutedEventArgs e)
        {
            var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("HelloWorld.xml", CreationCollisionOption.ReplaceExisting);
            if (file != null)
            {
                SaveXML_HelloWorld(file);
                StatusTextLocalFolder.Text = "Saved to " + file.Path;
            }
        }
        private async void SaveXML_HelloWorld(StorageFile file)
        { 
            XDocument xdoc = new XDocument();

            #region Compose XML
            XElement xroot = new XElement("Hello");
            xdoc.AddFirst(xroot);

            XElement xsub = new XElement("World");
            xroot.AddFirst(xsub);

            xsub.AddFirst(new XText("Hello World!"));
            #endregion

            #region Save XML to the file
            using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
            {
                xdoc.Save(stream.AsStreamForWrite());
                await stream.FlushAsync();
                stream.Size = stream.Position;
            }
            #endregion
        }

References

Save a file with a picker
https://msdn.microsoft.com/en-us/windows/uwp/files/quickstart-save-a-file-with-a-picker

ApplicationData.LocalFolder
https://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.applicationdata.localfolder.aspx



这篇关于[C#] Uwa - 读写Xml文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆