无法根据属性删除节点
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);
我正在尝试根据节点的属性之一删除 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);