LINQ:根据属性值从XML删除元素? [英] LINQ: Remove Element from XML based on attribute value?

查看:126
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆