无法根据属性删除节点

Failing to delete node based on attribute

我正在尝试根据节点的属性之一删除 XML 节点。

XML 结构如下所示:

<root>
    <outer>
        <Series  InstanceUID="" TimeStamp="" Delete="true">
          <Image InstanceUID="" File="" TimeStamp=""/>
          <Image InstanceUID="" File="" TimeStamp=""/>
        </Series>
        <Series  InstanceUID="" TimeStamp="" Delete="true">
          <Image InstanceUID="" File="" TimeStamp=""/>
          <Image InstanceUID="" File="" TimeStamp=""/>
        </Series>
        <Series  InstanceUID="" TimeStamp="" Delete="false">
          <Image InstanceUID="" File="" TimeStamp=""/>
          <Image InstanceUID="" File="" TimeStamp=""/>
        </Series>
    </outer>
</root>

如果delete属性等于true,则删除整个节点。

XElement _XML = XElement.Load(fileLocation);
_XML.Descendants("outer")
    .Elements("Series")
    .Where(x => x.Attribute("Delete").Value == "true")
    .Remove();

查询似乎选择了正确的节点,因为如果我用 Select( x=>x) 替换 Remove(),它会选择 delete = "true" 节点。 我到底做错了什么?

修改后 XElement 您已将原始 xml 加载到 - 您需要保存更改,因为加载数据后 XElement 不是 "connected"不再与源文件。

所以在你的代码中添加这样的东西:

_XML.Save(fileLocation);