C# 如何将XDocument的XML内容保存为.XML文件?

C# 如何将XDocument的XML内容保存为.XML文件?,c#,xml,io,linq-to-xml,C#,Xml,Io,Linq To Xml,我有一个XDocument类,其中包含已经生成的XML内容。我基本上想打开一个SaveFileDialog,让用户选择一个文件夹(不是文件),在其中将内容保存为.xml文件 我在这样做时遇到了一些困难: a) 如何使用SaveFileDialog提示用户选择文件夹?我只能用它让用户选择一个文件 b) 如何从SaveFileDialog提取所选路径 c) 获得路径后,如何保存XDocument的内容?有一个名为Save的方法需要一个流-如何使用路径构建流?(这可能是一个基本问题,我几乎没有IO经验

我有一个XDocument类,其中包含已经生成的XML内容。我基本上想打开一个SaveFileDialog,让用户选择一个文件夹(不是文件),在其中将内容保存为.xml文件

我在这样做时遇到了一些困难:

a) 如何使用SaveFileDialog提示用户选择文件夹?我只能用它让用户选择一个文件

b) 如何从SaveFileDialog提取所选路径

c) 获得路径后,如何保存XDocument的内容?有一个名为Save的方法需要一个流-如何使用路径构建流?(这可能是一个基本问题,我几乎没有IO经验)

a)您不想选择文件夹,而是选择文件名(保存*文件*对话框)

b) SaveFileDialog.FileName

c) 看看不同的重载:您有XDocument.Save(字符串文件名)。不需要流,您可以有一个文件名(哦,您在SaveFileDialog中获得了它)

编辑:您的意思是用户不能更改文件名? 然后

a) FolderBrowser对话框

b) FolderBrowserDialog.SelectedPath

c) XDocument.Save(FolderBrowserDialog.SelectedPath+“/”+用户不能更改的文件名)

edit2:Path.Combine在c中更优雅。)

A&B(重复问题的示例代码):

C(保存文档的最低代码):


确保已将SaveFileDialog添加到表单中,并已签名到FileOk事件(可通过SaveFileDialog的属性完成),然后以下代码应适用于您的表单:

private void button1_Click(object sender, EventArgs e)
{
    // When user clicks button, show the dialog.
    saveFileDialog1.ShowDialog();
}

private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
    // Get file name.
    string name = saveFileDialog1.FileName;
    // Write to the file name selected.
    xDocumentYouHave.Save(name);
}

你在同一个问题上问得太多了。把这个问题分成两个问题。一个用于保存文件对话框,另一个用于保存XDocument。
private void button1_Click(object sender, EventArgs e)
{
    // When user clicks button, show the dialog.
    saveFileDialog1.ShowDialog();
}

private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
    // Get file name.
    string name = saveFileDialog1.FileName;
    // Write to the file name selected.
    xDocumentYouHave.Save(name);
}