我已经创建了一个XElement,其节点包含如下XML。
如果“Rule”节点包含“conditions”节点,我想删除所有这些节点。
我创建了一个for循环,如下所示,但它不会删除我的节点
foreach (XElement xx in xRelation.Elements())
{
if (xx.Element("Conditions") != null)
{
xx.Remove();
}
}
样品:
<Rules effectNode="2" attribute="ability" iteration="1">
<Rule cause="Cause1" effect="I">
<Conditions>
<Condition node="1" type="Internal" />
</Conditions>
</Rule>
<Rule cause="cause2" effect="I">
<Conditions>
<Condition node="1" type="External" />
</Conditions>
</Rule>
</Rules>
如果“Rule”节点包含“conditions”节点,如何删除所有这些节点?
6条答案
按热度按时间vsdwdz231#
您可以尝试以下方法:
基本思想:不能删除当前正在迭代的集合中的元素。
因此,首先必须创建要删除的节点列表,然后删除这些节点。
mutmk8jj2#
您可以使用Linq:
或者创建要删除的节点的副本,然后删除它们(如果第一种方法不起作用):
bn31dyow3#
这将删除与XML文档的名称“Conditions”匹配的所有descendant元素。
6jjcrrmo4#
我给你们举了个小例子:
bd1hkmkf5#
sauutmhj6#
只是一个想法:
反转Linq“条件”,您将得到一个没有“规则”节点的List