我的xml文件是这样的
<?xml version="1.0" encoding="utf-8"?>
<NewData>
  <Files>
    <名称>Admin_Default.asp</名称>
    <存储名称>14575184927.asp</存储名称>
    <所在地址>UpFiles/200609/12/14575184927.asp</所在地址>
    <日期时间>2006年9月12日</日期时间>
  </Files>
  <Files>
    <名称>CrystalDecisions.VSShell.dll</名称>
    <存储名称>21315854556.dll</存储名称>
    <所在地址>UpFiles/200609/12/21315854556.dll</所在地址>
    <日期时间>2006年9月12日</日期时间>
  </Files>
</NewData> 我想删除
<Files>
    <名称>CrystalDecisions.VSShell.dll</名称>
    <存储名称>21315854556.dll</存储名称>
    <所在地址>UpFiles/200609/12/21315854556.dll</所在地址>
    <日期时间>2006年9月12日</日期时间>
</Files>做后得到的结果是<NewData>
  <Files>
    <名称>Admin_Default.asp</名称>
    <存储名称>14575184927.asp</存储名称>
    <所在地址>UpFiles/200609/12/14575184927.asp</所在地址>
    <日期时间>2006年9月12日</日期时间>
  </Files>
</NewData>可是我最后只能得到这样的的结果
NewData>
  <Files>
    <名称>Admin_Default.asp</名称>
    <存储名称>14575184927.asp</存储名称>
    <所在地址>UpFiles/200609/12/14575184927.asp</所在地址>
    <日期时间>2006年9月12日</日期时间>
  </Files>
   <Files>
  </Files>
</NewData>
我应该怎么写呢?这是我的代码:
public void DeleteFileXML(string filename)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("XML/XMLFile.xml"));
XmlNodeList xnl=xmldoc.SelectSingleNode("NewData").ChildNodes;
foreach(XmlNode xe in xnl)
{
if(xe.FirstChild .InnerText ==filename)
{
                    xe.RemoveAll ();
}
}
xmldoc.Save (Server.MapPath ("XML/XMLFile.xml"));
}