我有一个我需要写的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());
}
}
流程如下:
答案 0 :(得分:1)
将生命周期分为三个部分:
XmlDocument
API,但无论你需要做什么......)你还没有真正解释中间步骤发生了什么,但有两种可能的选择:
您可以在另一个类中隐藏XML - 因此您在类中有一个XmlDocument
或XDocument
作为成员变量,调用代码如下所示: / p>
Foo foo = Foo.Load("test.xml");
// Whatever you need here...
foreach (var data in someSource)
{
foo.UpdateWithData(data);
}
foo.Save("test.xml");
这样,唯一需要了解XML文件结构的类是Foo
。 (当然,你可以将它重命名为更合适的东西。)
答案 1 :(得分:0)