c# xml添加 删除 修改数据

181 篇文章 2 订阅
3 篇文章 0 订阅
//首先添加一个xml文件,一定要先手动添加一个根结点,否则程序找不到根结点


//<user></user>


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;//这个是添加的




public partial class _Default : System.Web.UI.Page
{
    private XmlDataDocument xmlDoc;//声明全局变量xmlDoc,类型是XmlDataDocument
    protected void Page_Load(object sender, EventArgs e)
    {


    }


//声明加载xml文件的方法
    private void xmlLoad()
    {
        xmlDoc = new XmlDataDocument();
        xmlDoc.Load(Server.MapPath("trytry.xml"));//文件名是trytry.xml
    }


//点击添加按钮,添加数据
    protected void ButtonAdd_Click(object sender, EventArgs e)
    {
        xmlLoad();//调用加载xml文件的方法
        XmlNode xmldocSelect = xmlDoc.SelectSingleNode("user");//xml文件的根结点是user


        XmlElement el = xmlDoc.createElement_x_x ("person");//添加person节点
        el.SetAttribute("name", "云云");//添加属性名,及属性值
        el.SetAttribute("sex", "女");
        el.SetAttribute("age", "25");


        XmlElement xesub1 = xmlDoc.createElement_x_x("pass");//添加person节点的子节点
        xesub1.InnerText = "123";//节点pass下的值是123
        el.AppendChild(xesub1);//将节点pass添加到父节点person下
        XmlElement xesub2 = xmlDoc.createElement_x_x("address");
        xesub2.InnerText = "中国西安";
        el.AppendChild(xesub2);


        xmldocSelect.AppendChild(el);//将节点person加到根结点xmldocSelect下
        xmlDoc.Save(Server.MapPath("trytry.xml"));//保存,这个十分重要,否则没有数据


    }


//点击修改按钮,修改数据
    protected void ButtonUpdata_Click(object sender, EventArgs e)
    {
        xmlLoad();//调用加载xml文件的方法
        XmlNodeList list = xmlDoc.SelectSingleNode("user").ChildNodes;//获得根节点user下的所有子节点


 


//遍历所有子节点


        foreach (XmlNode node in list)
        {
            XmlElement xe = (XmlElement)node;//把节点node转换成XmlElement型
            if (xe.GetAttribute("name") == "云云")//如果节点的属性name的值是"云云"
            {
                xe.SetAttribute("name","哈哈");//把节点的name属性改为"哈哈"
            }
            XmlNodeList sublist = xe.ChildNodes;//再获得该节点的子节点
            foreach (XmlNode subnode in sublist)
            {
                XmlElement subxe = (XmlElement)subnode ;
                if (subxe.Name == "address")//如果节点是"address"
                {
                    if (subxe.InnerText == "中国西安")//如果该节点下的值是"中国西安"
                        subxe.InnerText = "中国三河";
                    break;
                }
            }
        }
        xmlDoc.Save(Server.MapPath("trytry.xml"));
    }


//点击删除按钮,删除数据
    protected void ButtonDele_Click(object sender, EventArgs e)
    {
        xmlLoad();
        XmlNodeList list = xmlDoc.SelectSingleNode("user").ChildNodes;
        foreach (XmlNode node in list)
        {
            XmlElement xe = (XmlElement)node;
            if (xe.GetAttribute("name") == "哈哈")
            {
                xe.RemoveAttribute("name");//删除属性
            }
            else
                xe.RemoveAll();//删除节点


//


这里有一点需要注意:用xe.RemoveAll()的方法删除是会留下一个空的节点,我们用node.ParentNode.RemoveChild(node);就能全部删除
        }


        xmlDoc.Save(Server.MapPath("trytry.xml"));
      
    }
}




在这里还要补充一点,就是在访某个问子节点时,可以直接进行访问。代码如下


 XmlNodeList list = xmlDoc.SelectSingleNode("user/person").ChildNodes;


这就是说,我访问的是“user”根结点下的“person”子节点。


 


还有一个需要说明,平时可能用到。就是我在同一个方法里访问两个xml文件,一定要一个一个来。否则会出错。也就是说访问两个xml文件的代码要分开写,不要杂糅在一起。明白了?




参考文献http://tech.it168.com/KnowledgeBase/Articles/c/1/8/c18b81c7598408094d70f68d65f43869.htm
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值