C# 如何删除XML节点?

C# 如何删除XML节点?,c#,asp.net,xml,C#,Asp.net,Xml,我已经创建了从XML中选择和删除节点的方法。我的代码运行,但XML节点未被删除 我不知道代码哪里出错,请帮助我解决此问题: public XmlNodeList getXmlNodeList(string XmlNodeName) { XmlDocument doc = new XmlDocument(); doc.Load(_connection); XmlNodeList elemList = doc.GetElementsByTagName(XmlNodeName)

我已经创建了从XML中选择和删除节点的方法。我的代码运行,但XML节点未被删除

我不知道代码哪里出错,请帮助我解决此问题:

public XmlNodeList getXmlNodeList(string XmlNodeName)
{
    XmlDocument doc = new XmlDocument();
    doc.Load(_connection);
    XmlNodeList elemList = doc.GetElementsByTagName(XmlNodeName);
    return elemList;
}

public void deleteXmlNode(string XmlNodeName, string XmlNodeValue)
{
    XmlDocument xdoc = new XmlDocument();
    xdoc.Load(_connection);
    XmlNodeList xnode = getXmlNodeList(XmlNodeName);

    foreach (XmlNode item in xnode)
    {
        if (item.InnerText == XmlNodeValue)
        {
            item.ParentNode.RemoveChild(item);
            break;
        }
    }
    xdoc.Save(_connection);
}
我的XML代码:

<AriaGostarInformation>
  <MenuInformation>
    <MenuNames>
      one
    </MenuNames>
    <MenuNames Name="1">two</MenuNames>
    <MenuNames Name="2">three</MenuNames>
    <MenuNames Name="3">four</MenuNames>
    <MenuNames Name="4">five</MenuNames>
    <MenuNames Name="5">six</MenuNames>
    <SubMenuNames parentName="1">
      fgfgfgfgs
    </SubMenuNames>
    <SubMenuNames parentName="3">
    </SubMenuNames>
  </MenuInformation>
  <SliderInformation>
  </SliderInformation>
  <LasProductInformation>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
    <Product>
      <ImageAddress alt="">../Static/Css/Images/c.jpg</ImageAddress>
      <Subject>bere</Subject>
      <Description>nare</Description>
    </Product>
  </LasProductInformation>
</AriaGostarInformation>

一
二
三
四
五
六
FGS
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔
../Static/Css/Images/c.jpg
贝雷
鼻孔

加载两个单独的
XmlDocument
对象来查找xmltree的节点,这会影响性能。然而,看起来你并没有什么实际的错误。您可能没有传递有效的参数。您是否尝试添加任何跟踪以查看提交给方法的值?还有一个建议,这两个方法可以组合成一个非常简短的方法,使用Linq to Xml,使用下面的delete节点方法代码。以下选项可以删除所有匹配的节点:

public void deleteXmlNode(string xmlNodeName, string xmlNodeValue)
{
     XDocument xDoc = XDocument.Load(_connection);
     var xNodeList = xDoc.Descendants(xmlNodeName).Where(n => n.Value == xmlNodeValue);
     xNodeList.Remove();
}
资料来源: