asp.net 删除XML文件中多个XML节点

原XML文件<?xmlversion="1.0"encoding="gb2312"?><user><person></person><personname="风拉"sex... 原XML文件
<?xml version="1.0" encoding="gb2312"?>
<user>
<person>
</person>
<person name="风拉" sex="女" age="25">
<pass>123</pass>
<Adress>昆明</Adress>
</person>
<person name="发明" sex="女" age="25">
<pass>123</pass>
<Address>发明</Address>
</person>
<person name="发明" sex="女" age="25">
<pass>123</pass>
<Address>发明</Address>
</person>
<person name="发明" sex="女" age="25">
<pass>123</pass>
<Address>发明</Address>
</person>
<person name="发明" sex="女" age="25">
<pass>123</pass>
<Address>发明</Address>
</person>
</user>

我要实现的是PERSON NAME=“发明”的节点全部删除,。我用了这种方法
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("user.xml"));
XmlNodeList xnl = xmlDoc.SelectSingleNode("user").ChildNodes;
foreach (XmlNode xn in xnl)
{
XmlElement xe = (XmlElement)xn;

if (xe.GetAttribute("name") == "发明")
{
xe.ParentNode.RemoveChild(xe);

}
}
xmlDoc.Save(Server.MapPath("user.xml"));//保存
这个只能删除一个节点,不能全部删除!
展开
 我来答
handangaoyang
2013-12-03 · TA获得超过2242个赞
知道大有可为答主
回答量:2633
采纳率:88%
帮助的人:904万
展开全部
            using System.Xml.Linq;
            XElement xml = XElement.Load(@"D:\Test\user.xml");

            xml.Elements("person").Where(c=>
                {
                    bool flag = false;
                    if (c.Attribute("name") != null)
                    {
                        if (c.Attribute("name").Value.Equals("发明"))
                            flag = true;
                    }
                    else
                        flag = false;
                    return flag;
                }).Remove();

            xml.Save(@"D:\Test\user.xml");
怪微风太温柔Cide1
2013-12-03 · TA获得超过153个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:178万
展开全部
哥们,你这么写太麻烦了,现在是linq时代,简单的一笔啊,等我去装个VS写给你,你绝对会爱上linq的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式