2012-04-07 85 views
2

我有一個XDocument類,已經制作了XML內容。我基本上想要打開一個SaveFileDialog,讓用戶選擇一個文件夾(而不是文件),將文件內容保存爲.xml文件。如何將XDocument的XML內容保存爲.xml文件?

我有一些困難,這樣做:

一)我如何使用SaveFileDialog提示用戶選擇一個文件夾?我只能用它來讓用戶選擇一個文件。

b)如何從SaveFileDialog中提取所選路徑?

c)一旦我有了路徑,我該如何保存XDocument的內容?有一種叫做Save的方法需要一個Stream--我如何使用路徑構建流? (這可能是一個基本的問題,我幾乎沒有任何經驗的IO)

+1

你問的同樣的問題太多東西。將其分成兩個問題。一個關於SaveFileDialog,另一個關於保存XDocument。 – 2012-04-07 19:31:10

回答

2

a)你不想選擇一個文件夾,但文件名(保存* 文件 *對話)

B) SaveFileDialog.FileName

c)看看不同的重載:你有XDocument.Save(string fileName)。沒有必要有一個流,你可以有一個文件名(哦,你在SaveFileDialog得到它)

編輯:你的意思是用戶不能更改文件的名稱? 然後

一個)的FolderBrowserDialog

b)中FolderBrowserDialog.SelectedPath

C)XDocument.Save(FolderBrowserDialog.SelectedPath + 「/」 + THENAMEOFYOURFILETHATUSERCANTCHANGE)

編輯2:路徑。 c)中的組合更優雅)。

0

一個& B(從重複問題示例代碼):

C(最少的代碼保存XDocument):

XDocument document = new XDocument(); 
document.Add(new XElement("my_root")); 
// Save(): there are 6 overloads; the 2nd one takes a path 
document.Save(filePathFromSaveDialog); 
0

確保您添加SaveFileDialog到你的表單並簽名到FileOk事件(可以通過SaveFileDialog的屬性完成),然後是代碼您d工作:

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); 
}