如何使用serialize xml保存文件

时间:2016-05-09 10:02:30

标签: c# xml wpf file save

我尝试使用按钮为DataGrid保存文件,但我不知道如何保存它,用户可以选择保存位置。在代码上也有一些问题。

    private void Button_Click_4(object sender, RoutedEventArgs e)
    {
        var path = @"C:\\Users\\Tiago\\Documents\\Teste\\Save.xml";

            if (serializableObject == null) { return; }

            try
            {
                XmlDocument xmlDocument = new XmlDocument();
                XmlSerializer serializer = new XmlSerializer(serializableObject.GetType());
                using (MemoryStream stream = new MemoryStream())
                {
                    serializer.Serialize(stream, serializableObject);
                    stream.Position = 0;
                    xmlDocument.Load(stream);
                    xmlDocument.Save(path);
                    stream.Close();
                }
            }
            catch (Exception ex)
            {

            }


    }

这就是我现在所得到的。

4 个答案:

答案 0 :(得分:0)

如果您想允许用户选择文件的位置和名称,可以使用SaveFileDialog选项。

以下是一些可以帮助您完成此任务的链接:
MSDN Link_1
MSDN Link_2
Link_3

答案 1 :(得分:0)

using (FileStream fs = new FileStream(path, FileMode.Create)错过了)

答案 2 :(得分:0)

首先,您的代码末尾缺少}大括号。这可能会解决一些问题。

其次,请确保serializableObject事件可以访问您的Button_Click_4。将serializableObject设置为字段或属性以进行访问。

选择保存位置使用FileSaveDialog为用户提供选择保存的位置。

创建一个:

var fileSaveDialog = new FileSaveDialog();

然后显示:

fileSaveDialog.ShowDialog();

然后,您可以使用FileSaveDialog对象在"保存"点击。

这是一个字符串 - 将path变量设置为它。

像这样:

var path = fileSaveDialog.FileName;

有关使用FileSaveDialog的详细教程,请参阅http://www.wpf-tutorial.com/dialogs/the-savefiledialog/

示例:(在Button_Click_4事件处理程序中使用此内容)

var saveFileDialog = new SaveFileDialog(); // Create it

System.Windows.Forms.DialogResult result = saveFileDialog.ShowDialog(); // Show the dialog and set a result (bool) to whether the user clicks "Save" or exits out of the dialog

if (result == DialogResult.OK) // If the user clicked "Save"
{
    var path = saveFileDialog.FileName; // Set the path to save to

    // Use the path variable to save the file to disk using your own code
}

希望这有帮助!

修改
不要忘记在代码顶部使用using Microsoft.Win32;

另一个编辑:
我已更新代码,将result指定为System.Windows.Forms.DialogResult来比较result == DialogResult.OK
请参阅:DialogResult.OK on SaveFileDialog not work

答案 3 :(得分:0)

要选择保存位置,您可以使用System.Windows.Forms.FolderBrowserDialog class。但这是一个WinForm库,因此您需要将System.Windows.Forms添加到项目引用中。

var dialog = new System.Windows.Forms.FolderBrowserDialog();
System.Windows.Forms.DialogResult result = dialog.ShowDialog();