<?xml version="1.0" encoding="utf-8"?>
<data>
  <area />
  <area id="qinghai" title="青海" value="青海,人口:100万,面积:380万平方公里" />
</data>
xml文件是这样的;
    protected void Button3_Click(object sender, EventArgs e)
    {
        Button bt = (Button)sender;
        string id = bt.CommandArgument;
        string xmlurl = Server.MapPath("d.xml");
        XmlDocument doc = new XmlDocument();
        doc.Load(xmlurl);
        foreach (XmlNode node in doc["data"])
        {
            XmlElement xe = (XmlElement)node;
            if (node.Attributes["id"].Value.ToString() == id)
            {
                xe.RemoveAll();
               
            }
        }
        doc.Save(xmlurl);
        Response.Redirect(Request.CurrentExecutionFilePath);
    }
这个是删除的;
可是删除一个节点后还剩下
<area />
怎么把这个全部都删掉??

解决方案 »

  1.   

    前台是这样绑定的   
         <asp:DataList ID="DataList1" runat="server" DataSourceID="XmlDataSource1" >
                <ItemTemplate>
     <td style=" width:100px;">
                     <asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' />
                     </td>
                     <td style=" width:100px;">
                     
                     <asp:Label ID="titleLabel" runat="server" Text='<%# Eval("title") %>' />
                     </td>
                     <td style=" width:600px;">
                     <asp:Label ID="valueLabel" runat="server" Text='<%# Eval("value") %>' />
                     </td>
                    
                     <td style=" width:50px;"> &nbsp;<asp:Button ID="Button2" runat="server" Text="修改" CommandArgument='<%# Eval("id") %>'  OnClick="Button2_Click" />
                     </td>
                     <td style=" width:50px;"> &nbsp;<asp:Button ID="Button3" runat="server" Text="删除"  CommandArgument='<%# Eval("id") %>'  OnClick="Button3_Click"/>
                     </td>
                </ItemTemplate>
            </asp:DataList>
                
            <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/d.xml">
            </asp:XmlDataSource>
      

  2.   

    删除后出现这样的错误“/WebSite4”应用程序中的服务器错误。
    --------------------------------------------------------------------------------DataBinding:“System.Web.UI.WebControls.XmlDataSourceNodeDescriptor”不包含名为“id”的属性。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: DataBinding:“System.Web.UI.WebControls.XmlDataSourceNodeDescriptor”不包含名为“id”的属性。源错误: 
    行 62:             <ItemTemplate>
    行 63:  <td style=" width:100px;">
    行 64:                  <asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' />
    行 65:                  </td>
    行 66:                  <td style=" width:100px;">
     源文件: d:\MyWorkPlace\WebSite4\Default.aspx    行: 64 
    或者有其他的解决方法也行。谢谢了
      

  3.   

    没搞过XML,如果是在数据库中,这个代码因该没问题。
      

  4.   

    XmlElement.RemoveAll 方法是移除当前节点的所有指定属性和子级。不移除默认属性。
    你应该在< data >节点处用Xpath匹配ID,然后进行删除。
      

  5.   

                XmlElement xe = (XmlElement)node;
                if (xe.GetAttribute("id") == id)
                {
                    xe.ParentNode.RemoveChild(xe);
                   
                }
    用这个解决了。如果我想添加呢一条记录呢?