我有一个需要写入的 XML 文件。我已经可以使用以下方法成功地做到这一点:
//Code to open the File
public void Open(string FileName, string FilePath)
{
try
{
XmlDoc = new XmlDocument();
XmlDoc.PreserveWhitespace = true;
XmlnsManager = new XmlNamespaceManager(mXmlDoc.NameTable);
XmlnsManager.AddNamespace("", "urn:xmldata-schema");
FileStream = new FileStream(@Path.Combine(FilePath, FileName),
FileMode.Open, FileAccess.ReadWrite);
XmlDoc.Load(FileStream);
}
catch (Exception inException)
{
MessageBox.Show(inException.ToString());
}
}
//Code to write to the file
public void SetValueByElementName(string Name, string Value)
{
try
{
XmlNode node = XmlDoc.SelectSingleNode("//" + inElementID, XmlnsManager);
node.InnerText = Value;
}
catch (Exception inException)
{
MessageBox.Show(inException.ToString());
}
}
//Code to save the file
public void Save()
{
try
{
XmlDoc.Save(@Path.Combine(XmlFilePath, XmlFileName));
IsFileModified = false;
}
catch (Exception inException)
{
MessageBox.Show(inException.ToString());
}
}
但是,这个类的实现,就是每次需要往XML文件里写东西的时候,都得保存。现在,我被告知我必须更改它,应该发生的是我只需要保存一次,即在读/写完成时的最后。我怎样才能做到这一点?
编辑:
我忘了补充:我不太明白的一件事是实现需要立即关闭文件流。
//Code to close stream
private void CloseStream()
{
try
{
FileStream.Close();
}
catch (Exception inException)
{
MessageBox.Show(inException.ToString());
}
}
流程如下:
- OpenFile(然后立即关闭它)
- 关闭文件
- SetFirstElementValueByElementId(更改 xml 文件中的某些内容)。
- SaveFile (每次我进行更改时都必须调用,否则它们不会反映在文件上)。