关闭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);      
        }

和我得到一个错误,而试图保存文件…任何想法?我想我错过了一些非常非常愚蠢的东西,但现在却看不到。

关闭XDocument实例

我相信你在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);