C# 如何使用C删除XML中的特定子集合#

C# 如何使用C删除XML中的特定子集合#,c#,xml,C#,Xml,我有下面的XML文件 <Data> <Collection name="CD" type="Group"> <Column name="CD">0</Column> <Column name="ATXR">01/02/1753 00:00:00.020</Column> </Collection> <Collection name="CALL" type="Group"> <

我有下面的XML文件

<Data>
 <Collection name="CD" type="Group">
  <Column name="CD">0</Column> 
  <Column name="ATXR">01/02/1753 00:00:00.020</Column> 
 </Collection>
 <Collection name="CALL" type="Group">
  <SubCollection name="CALL" type="Row">
  <Column name="PRCF">0072</Column> 
  <Column name="CDML">0</Column> 
  <Column name="ATXR">NULL</Column> 
  </SubCollection>
 </Collection>
 <Collection name="CORALL" type="Group">
  <SubCollection name="CORALL" type="Row">
  <Column name="ID">AA</Column> 
  <Column name="AMT">202.8000</Column> 
  <Column name="EX_ID">h27</Column> 
  </SubCollection>
  <SubCollection name="CORALL" type="Row">
  <Column name="ID">CE</Column> 
  <Column name="AMT">0.00</Column> 
  <Column name="EX_ID">III</Column> 
  </SubCollection>
  </Collection>
</Data>

0
01/02/1753 00:00:00.020 
0072
0
无效的
AA
202.8000
h27
总工程师
0
三,
当子集合符合以下条件时,我需要完全删除它。 1) 当集合名称为CORALL时 2) 珊瑚体内任何具有EX_ID的子集合都以h开头

最后一个XML文件应该如下所示

<Data>
 <Collection name="CD" type="Group">
  <Column name="CD">0</Column> 
  <Column name="ATXR">01/02/1753 00:00:00.020</Column> 
 </Collection>
 <Collection name="CALL" type="Group">
  <SubCollection name="CALL" type="Row">
  <Column name="PRCF">0072</Column> 
  <Column name="CDML">0</Column> 
  <Column name="ATXR">NULL</Column> 
  </SubCollection>
 </Collection>
 <Collection name="CORALL" type="Group">
  <SubCollection name="CORALL" type="Row">
  <Column name="ID">CE</Column> 
  <Column name="AMT">0.00</Column> 
  <Column name="EX_ID">III</Column> 
  </SubCollection>
  </Collection>
</Data>

0
01/02/1753 00:00:00.020 
0072
0
无效的
总工程师
0
三,

有什么帮助/想法可以实现这一点吗?

这里的诀窍是找到您需要的内容并导航到它的父节点以删除匹配的节点:

foreach (XmlNode subCollection in xml.SelectNodes(
 "//Collection[@name='CORALL']/SubCollection[Column[@name='EX_ID' and starts-with(., 'h')] and Column[@name='AMT'   and . = '0.00']]"))
{
    // SubCollection.Collection.RemoveChild(SubCollection)
    subCollection.ParentNode.RemoveChild(subCollection);
}

听起来是一套非常好的要求。你能行!我能够使用XMLnode和for循环从XMl文件中读取数据。我不能做的是删除整个子集合太棒了!有代码显示吗?这将帮助我们帮助你。祝你好运是的,这很有效。。但是如果我们需要搜索两个条件,比如EX_ID以h开头,Amt=0.00。我们有办法只删除子集合吗?我编辑了这个答案以反映这个新的要求