关闭XDocument实例
本文关键字:实例 XDocument 关闭 | 更新日期: 2023-09-27 18:09:44
我一直在做一些研究,但仍然无法解决它。我有这个函数:
private void AddNewService()
{
string strPath = "ServicesToExecute.xml";
string strServicename = tbNewService.Text;
//try
//{
XDocument xdDocument;
using (XmlReader xmlReader = XmlReader.Create(strPath))
{
xdDocument = XDocument.Load(xmlReader);
XElement root = new XElement("Service");
root.Add(new XElement("Name", strServicename));
xdDocument.Element("ServicesToExecute").Add(root);
xmlReader.Close();
xdDocument.Save(strPath);
}
和我得到一个错误,而试图保存文件…任何想法?我想我错过了一些非常非常愚蠢的东西,但现在却看不到。
我相信你在XmlReader
中打开了一个名为ServicesToExecute.xml
的文件,然后试图在相同的路径保存XDocument
…也就是试图覆盖你已经打开读取的文件。根据上面的@mikez,您可能应该通过使用XDocument.Load(string path)
过载来简化代码,如下所示:
private void AddNewService()
{
string strPath = "ServicesToExecute.xml";
string strServicename = tbNewService.Text;
//try
//{
XDocument xdDocument = XDocument.Load(strPath);
XElement root = new XElement("Service");
root.Add(new XElement("Name", strServicename));
xdDocument.Element("ServicesToExecute").Add(root);
// Save
xdDocument.Save(strPath);