我必须处理一个XML文件(我选择的文件包含OpenFileDialog [此处不存在的代码],当我点击第二个按钮时,处理XML以显示该XML的树结构,该结构必须保存在其他文件)。但是当我使用SaveFileDialog时,我想输入一个尚不存在的文件的文件名。如果输入不退出的文件名,我该怎么办呢,会创建一个空文件?
private void button2_Click(object sender, EventArgs e)
{
SaveFileDialog fDialog = new SaveFileDialog();
fDialog.Title = "Save XML File";
fDialog.FileName = "drzewo.xml";
fDialog.CheckFileExists = false;
fDialog.InitialDirectory = @"C:\Users\Piotrek\Desktop";
if (fDialog.ShowDialog() == DialogResult.OK)
{
MessageBox.Show(fDialog.FileName.ToString());
}
string XMLdrzewo = fDialog.FileName.ToString();
XDocument xdoc = XDocument.Load(XMLdrzewo);
//// some code processing xml file
/// not ready yet, have to write to that file the tree
//structure of selected XML file
textBox2.Text = File.ReadAllText(XMLdrzewo);
当文件不存在时,我得到FileNotFoundException未处理。
答案 0 :(得分:2)
创建文件名的代码应该在if语句中。
if (fDialog.ShowDialog == DialogResult.OK)
{
}
然后,您需要先创建一个文件,例如var stream = File.Create(filename)
。然后,您可以使用“要创建的东西”填充该文件,并将xml部分存储在新创建的文件中。
类似的东西:
if (fDialog.ShowDialog() == DialogResult.OK)
{
using (var newXmlFile = File.Create(fDialog.FileName);
{
var xd = new XmlDocument();
var root = xd.AppendChild(xd.CreateElement("Root"));
var child = root.AppendChild(xd.CreateElement("Child"));
var childAtt = child.Attributes.Append(xd.CreateAttribute("Attribute"));
childAtt.InnerText = "My innertext";
child.InnerText = "Node Innertext";
xd.Save(newXmlFile);
}
}