0

I am trying to do something simple in c#. I have an XMLNode xNode with the following

<TxnFrameworkImport>
  <RefreshData>False</RefreshData> 
  <Initializing>False</Initializing> 
  <CompanyID>1902</CompanyID> 
  <FolderID>-1</FolderID> 
  <SearchId>-1</SearchId> 
  <Remote>False</Remote> 
  <Parameters>
     <Parameter Type="Transactions" Name="TransactionKey">
       <Value Type="A" Name="584">7576</Value> 
       <Value Type="A" Name="123">66345</Value> 
       <Value Type="A" Name="4214">66346</Value> 
     </Parameter>
  </Parameters>
</TxnFrameworkImport>

I would like to remove the nodes that have the Values of 66345 and 66346

Salah Akbari
  • 39,330
  • 10
  • 79
  • 109
jvoigt
  • 400
  • 4
  • 23

2 Answers2

1

Yet another sample with XPath condition or.

foreach (XmlNode node in doc.SelectNodes("//Value[.=66345] | //Value[.=66346]"))
{
    node.ParentNode.RemoveChild(node);
}
Alexander Petrov
  • 13,457
  • 2
  • 20
  • 49
0

While using the XDocument system for XML is preferred over XmlDocument, here is one way to do it using the XmlNode object you asked about.

// "//Parameter/Value" is an XPath selector that finds any Parameter Node and selects the child Value nodes of it.
foreach (XmlNode valueNode in doc.SelectNodes("//Parameter/Value"))
{
    if (valueNode.InnerText == "66345" || valueNode.InnerText == "66346")
    {
        valueNode.ParentNode.RemoveChild(valueNode);
    }
}

You can read more about XPath here

Thraka
  • 2,065
  • 19
  • 24