如何根据匹配的属性和值删除xml中的1个元素?

时间:2014-12-30 10:16:53

标签: c# xml

我想根据匹配的属性和值删除xml中的1个元素。 这是我的XML文件:

<Setup>
  <Include Type="Product">
    <Value uomid="8078">468908</Value>
    <Value uomid="8078">468922</Value>
  </Include>
</Setup>

这是我的代码:

XmlNodeList nodesMultipleUoM_delete = node.SelectNodes("//Value[@uomid='" + multipleUOM + "']");

if (nodesMultipleUoM_delete != null && nodesMultipleUoM_delete.Count > 0)
{
  for (int i = nodesMultipleUoM.Count - 1; i >= 0; i--)
  {
    if (nodesMultipleUoM_delete[i].Attributes["uomid"].Value == multipleUOM.ToString())
    {
      nodesMultipleUoM_delete[i].ParentNode.RemoveChild(node);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您的代码中没有任何地方检查节点值是否具有您正在寻找的值。

试试这个:

List<XmlNode> toDelete = new List<XmlNode>();

foreach (XmlNode value in node.SelectNodes("//Value[@uomid]"))
{
    if (value.Attributes["uomid"].Value == multipleUOM.ToString() &&
        value.InnerText == valueToMatch.ToString())
    {
        toDelete.Add(value);
    }
}
foreach (XmlNode value in toDelete)
{
    value.ParentNode.RemoveChild(value);
}