从XmlNode中删除特定节点

时间:2015-08-18 17:33:43

标签: c# xml xmlnode

我想在c#中做一些简单的事情。 我有一个XMLNode xNode,其中包含以下内容

<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>

我想删除值为6634566346

的节点

2 个答案:

答案 0 :(得分:1)

另一个XPath条件为or的示例。

foreach (XmlNode node in doc.SelectNodes("//Value[.=66345] | //Value[.=66346]"))
{
    node.ParentNode.RemoveChild(node);
}

答案 1 :(得分:0)

虽然使用XML的 XDocument 系统比 XmlDocument 更受欢迎,但这是使用您询问的 XmlNode 对象的一种方法

// "//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);
    }
}

您可以阅读有关XPath here

的更多信息