Csharp/C#教程:如何从XElement中删除特定节点?分享


如何从XElement中删除特定节点?

我创建了一个带有节点的XElement,它具有如下XML。

我想删除所有“ 规则 ”节点,如果它们包含“ 条件 ”节点。

我创建一个for循环,如下所示,但它不会删除我的节点

foreach (XElement xx in xRelation.Elements()) { if (xx.Element("Conditions") != null) { xx.Remove(); } } 

样品:

             

如果它们包含“ 条件 ”节点,如何删除所有“ 规则 ”节点?

你可以尝试这种方法:

 var nodes = xRelation.Elements().Where(x => x.Element("Conditions") != null).ToList(); foreach(var node in nodes) node.Remove(); 

基本思路:您无法删除当前正在迭代的集合元素。
首先,您必须创建要删除的节点列表,然后删除这些节点。

你可以使用Linq:

 xRelation.Elements() .Where(el => el.Elements("Conditions") == null) .Remove(); 

或者创建要删除的节点的副本,然后删除它们(如果第一种方法不起作用):

 List nodesToDelete = xRelation.Elements().Where(el => el.Elements("Conditions") == null).ToList(); foreach (XElement el in nodesToDeletes) { // Removes from its parent, but not nodesToDelete, so we can use foreach here el.Remove(); } 

我为你做了一个小例子:

上述就是C#学习教程:如何从XElement中删除特定节点?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 XDocument document = XDocument.Parse(GetXml()); var rulesNode = document.Element("Rules"); if (rulesNode != null) { rulesNode.Elements("Rule").Where(r => r.Element("Conditions") != null).Remove(); } 

 passiveLead.DataXml.Descendants("Conditions").Remove(); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1023621.html

(0)
上一篇 2022年1月7日
下一篇 2022年1月7日

精彩推荐