添加XML元素(如果不存在)

时间:2012-07-30 13:57:03

标签: c# xml

我在我的frogram中添加了一个新的复选框,需要将它的值保存到设置文件中。 我正在尝试使用以下代码:

private void CloseDisconnectedCbx_CheckedChanged(object sender, EventArgs e)
{
    XDocument doc = XDocument.Load(BotsFile);
    var savedBots = doc.Descendants("SavedBots")
        .Where(p => p.Element("BotName").Value.ToLower()
                    == SelectBotBox.SelectedItem.ToString().ToLower())
        .Elements("CloseDisconnected").FirstOrDefault();
    if (savedBots == null)
    {
        try
        {
            doc.Descendants("SavedBots")
               .Where(p => p.Element("BotName").Value.ToLower()
                           == SelectBotBox.SelectedItem.ToString().ToLower())
               .FirstOrDefault()
               .Add(new XElement("CloseDisconnected",
                    Convert.ToInt32(CloseDisconnectedCbx.Checked)));
            doc.Save(BotsFile);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
}

它确实添加了新元素,但是,它看起来像这样:

<CloseDisconnected/> VALUE

它永远不会结束元素的关闭。 我的代码是错的,还是我忘记了什么?

如果在XML文件中找不到该元素,则只应触发此代码。 如果是,则更改将由另一个按钮进行处理。

1 个答案:

答案 0 :(得分:0)

Check parenthesis in your code

XElement xElem = new XElement("root");
xElem.Add( new XElement("CloseDisconnected", "123") ); // generates what you expect
xElem.Add( new XElement("CloseDisconnected"), "123"); // generates what you see