aEk BKF
aEk BKF

Reputation: 131

Update element value in xml file

I'm updating an xml file by this code,

public static void UpdateDesignCfg(string ChildName, string[,] AttribWithValue)
{        
    try
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("DesignCfg.xml");
        XmlElement formData = (XmlElement)doc.SelectSingleNode("//" + ChildName);
        if (formData != null)
        {
            for (int i = 0; i < AttribWithValue.GetLength(0); i++)
            {
                formData.SetAttribute(AttribWithValue[i, 0], AttribWithValue[i, 1]);                    
            }
        }
        doc.Save("DesignCfg.xml");                                 
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

but I've often get this error ( not every time)

the process cannot access the file because it is being used by another process

so, Is there any way to " Release " the file after every change ?

Upvotes: 0

Views: 71

Answers (2)

aEk BKF
aEk BKF

Reputation: 131

I solved my problem, thanks so much @Ulugbek Umirov for help, the problem was on my ReadXmlFile Method, it was like this :

public static Color GetColor(string ChildName, string Attribute) 
{
 Color clr = new Color(); string v = ""; 
 XmlTextReader reader = new XmlTextReader("DesignCfg.xml"); 
 XmlDocument doc = new XmlDocument(); 
 XmlNode node = doc.ReadNode(reader); 
foreach (XmlNode chldNode in node.ChildNodes) 
{ 
   if (chldNode.Name == ChildName) 
      v = chldNode.Attributes["" + Attribute + ""].Value; 
} 
clr = System.Drawing.ColorTranslator.FromHtml(v);
return clr; 
}

and the new one is :

public static Color GetColor(string ChildName, string Attribute)
{
  Color clr = new Color();
  string v = "";
  XmlDocument doc = new XmlDocument();
  doc.Load("DesignCfg.xml");
  XmlElement formData = (XmlElement)doc.SelectSingleNode("//" + ChildName);
  if (formData != null)
     v = formData.GetAttribute(Attribute);    
  clr = System.Drawing.ColorTranslator.FromHtml(v);
  return clr;
}

Thanks all for help :)

Upvotes: 1

Ulugbek Umirov
Ulugbek Umirov

Reputation: 12797

UPDATE

The file is accessed from another place and is not closed. Use the same Load method in the other place.

Upvotes: 3

Related Questions