XML结构如下
<?xml version="1.0" encoding="gb2312"?>
 <Menus>
    <Menu>
      <Name>文件(&amp;F)</Name>
      <Menu>
        <Name>目录管理(&amp;L)</Name>
        <Menu>
          <Name>目录导入(&amp;P)</Name>
          <Command>
            <Module>TreePutData</Module>
            <Method>ShowTreePut</Method>
            <Parameter>
            </Parameter>
          </Command>
        </Menu>
        <Menu>
          <Name>目录导出(&amp;O)</Name>
          <Command>
            <Module>OutData</Module>
            <Method>ShowTreeOut</Method>
            <Parameter>
            </Parameter>
          </Command>
        </Menu>
      </Menu>
    </Menu>
</Menus>在C#里如何删除<Name>目录管理(&amp;L)</Name>这一层节点,
也就是<Name>文件(&amp;F)</Name>
下<Menu>节点,并且删除它的所有子节点!请各位师哥代码明示!

解决方案 »

  1.   

    删除结点:
    XmlDocument xmlDoc=new XmlDocument(); 
    xmlDoc.Load( Server.MapPath("data.xml") ); 
    XmlNode root=xmlDoc.SelectSingleNode("Employees");
    XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes; 
    for(int i=0;i<xnl.Count;i )
    {
    XmlElement xe=(XmlElement)xnl.Item(i); 
    if(xe.GetAttribute("genre")=="张三") 

    root.RemoveChild(xe);
    if(i<xnl.Count)i=i-1;

    }
    xmlDoc.Save( Server.MapPath("data.xml") ); 
    -------------------------------------------------
    你自己再稍微修改下
      

  2.   

    //创建一个XML文档类实例,使用该文档来实例创建XPathNavigator类的实例
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(strXML);//加载XML数据
    XPathNavigator xn = doc.CreateNavigator();//创建XPathNavigator类实例
    //删除数据的操作
    xn.MoveToRoot();//移动到根节点
    //在选择路径的结果节点集合中循环
    foreach (XPathNavigator nav in xn.Select("/Menus/Menu/Menu"))
    {
        nav.DeleteSelf();
    }
    //显示最终的编辑结果
    Console.WriteLine(doc.InnerXml);
    Console.ReadLine();
      

  3.   

    楼上的师哥:那个XML只是一部分!还有可能是这样
    <?xml   version="1.0"   encoding="gb2312"?> 
      <Menus> 
            <Menu> 
                <Name> 文件(&amp;F) </Name> 
                <Menu> 
                    <Name> 目录管理(&amp;L) </Name> 
                    <Menu> 
                        <Name> 目录导入(&amp;P) </Name> 
                        <Command> 
                            <Module> TreePutData </Module> 
                            <Method> ShowTreePut </Method> 
                            <Parameter> 
                            </Parameter> 
                        </Command> 
                    </Menu> 
                    <Menu> 
                        <Name> 目录导出(&amp;O) </Name> 
                        <Command> 
                            <Module> OutData </Module> 
                            <Method> ShowTreeOut </Method> 
                            <Parameter> 
                            </Parameter> 
                        </Command> 
                    </Menu> 
                </Menu> 
            </Menu> 
         <Menu>
          <Name>帮助(&amp;H)</Name>
          <Menu>
            <Name>帮助(&amp;H)</Name>
            <Command>
              <Module></Module>
              <Method></Method>
              <Parameter>
              </Parameter>
            </Command>
          </Menu>
          <Menu>
            <Name>XXXXXXX管理系统(&amp;A)</Name>
            <Command>
              <Module>Host</Module>
              <Method>About</Method>
              <Parameter>
              </Parameter>
            </Command>
          </Menu>
        </Menu>
    </Menus> 
    我只想删除<Name> 目录管理(&amp;L) </Name> 这一层节点, 
    也就是 <Name> 文件(&amp;F) </Name> 
    下 <Menu> 节点
      

  4.   

    我现在加上你给的判断条件这个判断条件xn.Select("/Menus/Menu/Menu")查不到内容啊
      

  5.   

    xn.Select是XPath的选取路径好不好?你可以通过nav的Value属性判断啊。我只是给你XPathNavigator选择内容,然后DeleteSelf删除的思路,这样可以不用常规的循环,至于怎样才能实现你想要的效果,只能在理解以后自己编写代码了。