我一直在处理将配置加载和写入XML文件的应用程序。我知道这样做有一些意见,但我一直在这个代码有问题。保存XML文件似乎只能保存一个条目
private static void AddToXmlTemplate(Template tmp, string _config)
{
string configFile = _config + "configuredTemplate.xml";
FileStream fs = new FileStream(configFile, FileMode.OpenOrCreate);
if (File.Exists(configFile)) {
XDocument xD = new XDocument();
xD.Add(new XElement("Store",
new XElement("template",
new XElement("filePath", tmp.TempPath),
new XElement("Name", tmp.TempName),
new XElement("description", tmp.TempDesc))));
xD.Save(fs);
fs.Flush();
fs.Dispose();
//commenting for change to allow sync.
}
else
{
/********------ appends the template to the config file.------*************/
XDocument xD = XDocument.Load(fs);
XElement root = xD.Element("Store");
IEnumerable<XElement> rows = root.Descendants("template");
XElement last = rows.Last();
last.AddAfterSelf(
new XElement("template"),
new XElement("filePath", tmp.TempPath),
new XElement("Name", tmp.TempName),
new XElement("description", tmp.TempDesc));
xD.Save(fs);
fs.Flush();
fs.Dispose();
}
}
这整个函数被调用另一个函数foreach循环,并且所有的功能应是检查,看看是否有文件夹中的配置文件,检查HTML文件,要求用户提供信息关于这些文件,然后保存到XML文件中。
我在想,我需要将文件流操作,也可能是XDocument移动到调用函数,并将它们传递给这个。
最大的问题是它只保存最后一组节点。
我可以看到这应该如何工作,但是如果我们进行这些更改,它只会运行else块。 –
@ChrisRutherford可能与文件路径有关。尝试使用字符串configFile = Path.Combine(_config,“configuredTemplate.xml”) – daniell89