<id>fdfassdfa</id>
    <kmobile>dfsasdf</kmobile>
    <kdate>啊啊啊啊啊啊</kdate>
    <kfrom>dsfdasfdasfdf</kfrom>
    <kdata>dfasdfdfsdfas</kdata>
....................
N行
如何删除 if (xe.ChildNodes[2].InnerText == "啊啊啊啊啊啊"   这个条件的数据行
RemoveAll 把这一行的数据字段全清空了,清了后,这行的字段全是null,但行本身并没有删除,下次读的时候还要读只不过里面是NULL了。如何删除这一行,类似删除数据哭的行一样删除!!!
 XmlDocument doc = new XmlDocument();
            doc.Load("data.xml");
            XmlNodeList xn = doc.SelectSingleNode("NewDataSet").ChildNodes;
            foreach (XmlNode xe in xn)
            {                if (xe.ChildNodes[2].InnerText == "啊啊啊啊啊啊")
                {
                    //xe.RemoveChild(xe.ChildNodes[2]);
                    //xe.RemoveAll();
                    xe.
                    doc.Save("data.xml");                }
            }

解决方案 »

  1.   

    <?xml version="1.0" encoding="utf-8"?>
    <NewDataSet>
      <data>
        <id>888</id>
        <kmobile>kkkkk</kmobile>
        <kdate>C#dasf</kdate>
        <kfrom>8</kfrom>
        <kdata>88888.3</kdata>
      </data>
      <data>
        <id>adfs</id>
        <kmobile>dfas</kmobile>
        <kdate>dfas</kdate>
        <kfrom>adfs</kfrom>
        <kdata>sdf</kdata>
      </data>
    </NewDataSet>这是原格式!!!
      

  2.   

    XmlDocument doc = new XmlDocument(); 
                doc.Load("data.xml"); 
                XmlNode xn = doc.SelectSingleNode("NewDataSet/data[kdate=啊啊啊啊啊啊"); 
    xn.ParentNode.RemoveChild(xn);
      

  3.   

    我这段代码你仔细看一下,一定能解决你的问题思路是这样的
    1 你首先的找你要删除这个结点的父结点
    2 然后便利他的孩子
    3 找到你要找的数据
    4 通过父亲删除他的孩子结点            String strPath = customerPath.getPath();
                XmlDocument XmlDoc = new XmlDocument();
                XmlDoc.Load(strPath);
                //上面的是读文件            XmlNodeList rootList = XmlDoc.GetElementsByTagName("Customer");//这个是父结点
                foreach (XmlNode xn in rootList)//每个孩子便利一下
                {
                    XmlElement xe = (XmlElement)xn;
                    XmlNodeList childList = xe.ChildNodes;                XmlElement cxe1 = (XmlElement)childList[0];
                    if (cxe1.InnerText == strName)//这里改成你的判断条件
                    {
                        rootList.RemoveChild(xe);//注意:删除孩子,通过父亲
                        MessageBox.Show("删除成功!");
                        break;
                    }
                }
                XmlDoc.Save(strPath);
      

  4.   

    没看到你发的原格式其实按照我发的代码你就先找data
    然后便利他的孩子
    找到kdata,如果内容是“啊啊啊啊。。”
    通过父亲data 执行:RemoveChild就OK啦!~~
      

  5.   

    楼上各位回答的都对,通过父节点来删除子节点,使用ParentNode.RemoveChild(childNode)即可