LINQ:根据属性值从XML删除元素? [英] LINQ: Remove Element from XML based on attribute value?
本文介绍了LINQ:根据属性值从XML删除元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我怎样才能删除元素在XML的基础上匹配的属性值
下面是我的XML:
<项目和GT;
<项目的serverUrl =TCP:// XYZ1:XXX / sdfsdf.rem项目名=PROJECT1/>
<项目的serverUrl =TCP:// XYZ2:XXX / sdfsdf.rem项目名=项目2/>
<项目的serverUrl =TCP:// xyz3:XXX / sdfsdf.rem项目名=项目3/>
<项目的serverUrl =TCP:// xyz4:XXX / sdfsdf.rem项目名=project4/>
<项目的serverUrl =TCP:// xyz5:XXX / sdfsdf.rem项目名=project5/>
<项目的serverUrl =TCP:// xyz6:XXX / sdfsdf.rem项目名=project6/>
< /项目和GT;
我用下面的LINQ查询:
VAR删除=从xdoc.Elements elemet(项目)。元素(项目)
其中elemet.Attribute(项目名称)。价值== PROJECT1
选择elemet.Parent.Remove();
我得到在特定的编译时错误:
在选择
子句类型的表达式是不正确的。
块引用>
编辑答案:
这一个为我工作。感谢所有VAR的XElement =(从xdoc.Elements elemet(项目)。元素(项目)
其中elemet.Attribute(项目名称)值== foundProject
选择elemet)。
xElement.Remove();
解决方案您可以使用下面的代码片段>
xdoc.XPathSelectElement(项目/工程[@projectName ='PROJECT1']),删除()。
How can I remove any element in xml based on matched attribute value?
Here is my XML :
<Projects> <Project serverUrl="tcp://xyz1:xxx/sdfsdf.rem" projectName="project1" /> <Project serverUrl="tcp://xyz2:xxx/sdfsdf.rem" projectName="project2" /> <Project serverUrl="tcp://xyz3:xxx/sdfsdf.rem" projectName="project3" /> <Project serverUrl="tcp://xyz4:xxx/sdfsdf.rem" projectName="project4" /> <Project serverUrl="tcp://xyz5:xxx/sdfsdf.rem" projectName="project5" /> <Project serverUrl="tcp://xyz6:xxx/sdfsdf.rem" projectName="project6" /> </Projects>
I am using the following LINQ query:
var remove = from elemet in xdoc.Elements("Projects").Elements("Project") where elemet.Attribute("projectName").Value == "project1" select elemet.Parent.Remove();
I am getting compile time error on select as :
The type of expression in select clause is Incorrect
EDIT ANSWER: this one works for me. Thanks All
var xElement = (from elemet in xdoc.Elements("Projects").Elements("Project") where elemet.Attribute("projectName").Value == foundProject select elemet); xElement.Remove();
解决方案You can use the following code snippet:
xdoc.XPathSelectElement("Projects/Project[@projectName = 'project1']").Remove();
这篇关于LINQ:根据属性值从XML删除元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文