根据选中的单选按钮,以文本或xml格式保存文件

时间:2017-06-18 00:49:05

标签: c# json xml windows-applications savefiledialog

我有一个应用程序,允许用户根据选择的单选按钮检索json或xml中的部分数据,解析数据然后显示在某些Window Application Form控件中。他们可以选择将控件中的数据保存在文本文件或XML文件中,具体取决于他们选择的单选按钮(用于检索数据的相同单选按钮)。

每次保存文件时,无论选择哪个单选按钮,都不会以所选格式保存。当我在计算机上检查文件时,它只显示一个空白文档图标,其类型为"文件。"

我的代码与此类似,它位于按钮内:

SaveFileDialog newData  = new SaveFileDialog();

        if (newData.ShowDialog() == DialogResult.OK)
        {
            if (jsonRB.Checked)
            {
                newData.DefaultExt = "txt";

                string dataPath = newData.FileName;

                using (StreamWriter newFile = new StreamWriter(File.Create(dataPath)))
                {
                    //Writing string to save data

                }

            }
            else 
            {
                newData.DefaultExt = "xml";

                XmlWriterSettings adjust = new XmlWriterSettings();
                adjust.ConformanceLevel = ConformanceLevel.Document;

                adjust.Indent = true;


                using (XmlWriter newFile = XmlWriter.Create(newData.FileName, adjust))
                {
                    //writing data
                    newFile.WriteEndElement();

                }

            }
        }

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

SaveFileDialog saveDlg = new SaveFileDialog();
if(jsonRB.Checked)
{
    //The default selected extension
    saveDlg.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
    //this is used if you select All files (*.*) but omit a extension
    saveDlg.DefaultExt = "txt"; 
}
else
{
    saveDlg.Filter = "XML files (*.xml)|*.xml|All files (*.*)|*.*";
    saveDlg.DefaultExt = "xml";
}
if(saveDlg.ShowDialog() == DialogResult.OK)
{
    if (jsonRB.Checked)
    {
        //Save JSON
    }
    else
    {
        //Save XML
    }
}