从XDocument中删除节点

时间:2015-02-12 16:52:00

标签: c# xml linq

我有一个xml配置文件,我试图从中删除一个节点。我的xml文档如下

<appSettings>
  <add key="value1" value="27348614" />
  <add key="value2" value="123432" />
  <add key="removeMe" value="removeMeAsWell" />
</appSettings>

我尝试过以下方法

public void removeNode(XDocument AppStoreXML, string FOPath)
{
    var newElement = new XElement("add",
             new XAttribute("key","removeMe" ),
            new XAttribute("value", "removeMeAsWell"));
    AppStoreXML.Root.Descendants("appSettings")
            .First(s => s.Attribute("key").Value == "removeMe")
            .Remove(); //this returns the error Sequence contains no matching element
    //newElement.Remove(); this try returns no matching parent

    AppStoreXML.Save(FOPath);
}

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

这是问题所在:

AppStoreXML.Root.Descendants("appSettings")

您正在尝试查找 appSettings的后代元素,它们也是名为 appSettings并具有指定的属性。您想要add元素:

AppStoreXML.Root.Descendants("add")

此外,您可能希望将First()更改为Where - 这样您就可以找到要删除的多个元素。