zoukankan      html  css  js  c++  java
  • 使用XmlDocument类完成对XML的查、删、添、改

    使用XmlDocument类完成对XML的查、删、添、改

    http://www.aspdiy.net/article/53.htm

    后台C#代码
      1using System;
      2using System.Collections;
      3using System.ComponentModel;
      4using System.Data;
      5using System.Drawing;
      6using System.Web;
      7using System.Web.SessionState;
      8using System.Web.UI;
      9using System.Web.UI.WebControls;
    10using System.Web.UI.HtmlControls;
    11//新引入两个命名空间
    12using System.Xml;
    13using System.Xml.XPath;
    14
    15namespace XML
    16{
    17    /**//// <summary>
    18    /// xdoc 的摘要说明。
    19    /// </summary>
    20    public class xdoc : System.Web.UI.Page
    21    {
    22        protected System.Web.UI.WebControls.Label Label1;
    23        protected System.Web.UI.WebControls.Label Label2;
    24        protected System.Web.UI.WebControls.Button Button1;
    25        protected System.Web.UI.WebControls.Label Label3;
    26        protected System.Web.UI.WebControls.Button Button2;
    27        protected System.Web.UI.WebControls.Button Button3;
    28        protected System.Web.UI.WebControls.DataGrid dg;
    29        protected System.Web.UI.WebControls.DropDownList ddl;
    30        protected System.Web.UI.WebControls.TextBox tbn;
    31        protected System.Web.UI.WebControls.Label Label4;
    32        protected System.Web.UI.WebControls.Label Label5;
    33        protected System.Web.UI.WebControls.Label Label6;
    34        protected System.Web.UI.WebControls.TextBox tbna;
    35        protected System.Web.UI.WebControls.TextBox tbc;
    36        protected System.Web.UI.WebControls.TextBox tbe;
    37        protected System.Web.UI.WebControls.Button Button4;
    38    
    39        private void Page_Load(object sender, System.EventArgs e)
    40        {//看动作名字就知道了是载入了
    41            if(!Page.IsPostBack)
    42            {
    43                fill();
    44            }
    45        }
    46
    47        Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
    48        override protected void OnInit(EventArgs e)
    49        {
    50            //
    51            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    52            //
    53            InitializeComponent();
    54            base.OnInit(e);
    55        }
    56        
    57        /**//// <summary>
    58        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    59        /// 此方法的内容。
    60        /// </summary>
    61        private void InitializeComponent()
    62        {    
    63            this.Button1.Click += new System.EventHandler(this.Button1_Click);
    64            this.Button2.Click += new System.EventHandler(this.Button2_Click);
    65            this.Button3.Click += new System.EventHandler(this.Button3_Click);
    66            this.Button4.Click += new System.EventHandler(this.Button4_Click);
    67            this.Load += new System.EventHandler(this.Page_Load);
    68
    69        }
    70        #endregion
    71
    72        private void fill()
    73        {//绑定方法
    74            DataSet ds=new DataSet();
    75            ds.ReadXml(Server.MapPath("\\xml\\xml\\doc.xml"));
    76            dg.DataSource=ds.Tables[0];
    77            dg.DataBind();
    78            XmlDocument xd=new XmlDocument();
    79            xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
    80            System.Xml.XmlNodeList xnl=xd.GetElementsByTagName("Name");
    81            ddl.Items.Clear();
    82            for(int i=0;i<xnl.Count;i++)
    83            {
    84                ddl.Items.Add(xnl[i].InnerText);
    85            }
    86        }
    87
    88        private void Button1_Click(object sender, System.EventArgs e)
    89        {//查询动作
    90            XmlDocument xd=new XmlDocument();
    91            xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
    92            tbn.Text=xd.SelectSingleNode("//User[Name='"+ddl.SelectedItem.Text+"']").ChildNodes.Item(2).InnerText.ToString();
    93
    94        }
    95
    96        private void Button2_Click(object sender, System.EventArgs e)
    97        {//删除动作
    98            XmlDocument xdoc=new XmlDocument();
    99            xdoc.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
    100            XmlNodeList xnl=xdoc.SelectSingleNode("dbGuest").ChildNodes;
    101            
    102            foreach(XmlNode xn in xnl)
    103            {
    104                XmlElement xe=(XmlElement)xn;
    105                XmlNodeList node=xe.GetElementsByTagName("Name");//查找他的Name行
    106                if(node.Count>0)
    107                {
    108                    if(node[0].InnerText==ddl.SelectedItem.Text)//如果当前节点的名字和下拉列表传来的一样,就删除
    109                    {
    110                        xe.RemoveAll();//删除节点的所有指定属性和子集,但是不删除默认属性,我很郁闷,不知道怎么连属性一起删除,如果有朋友知道,请一定告诉我下,谢谢了!
    111
    112                    }
    113                    break;
    114                }
    115
    116            }
    117            xdoc.Save(Server.MapPath("\\xml\\xml\\doc.xml"));
    118            fill();
    119        }
    120
    121        private void Button3_Click(object sender, System.EventArgs e)
    122        {//添加动作
    123            string name=this.tbna.Text.ToString();
    124            string city=this.tbc.Text.ToString();
    125            string email=this.tbe.Text.ToString();
    126            
    127            XmlDocument xd=new XmlDocument();
    128            xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));
    129            //查找dbGuest节点
    130            XmlNode xn=xd.SelectSingleNode("dbGuest");
    131            //创建user节点
    132            XmlElement xe_u=xd.CreateElement("User");
    133            //创建一个name元素
    134            XmlElement xe_a1=xd.CreateElement("Name");
    135            xe_a1.InnerText=name;//设置该元素的值
    136            xe_u.AppendChild(xe_a1);//把刚才创建的元素插入name节点里面去
    137            XmlElement xe_a2=xd.CreateElement("City");
    138            xe_a2.InnerText=city;
    139            xe_u.AppendChild(xe_a2);
    140            XmlElement xe_a3=xd.CreateElement("Email");
    141            xe_a3.InnerText=email;
    142            xe_u.AppendChild(xe_a3);
    143            XmlElement xe_a4=xd.CreateElement("Time");
    144            xe_a4.InnerText=(DateTime.Now).ToString();
    145            xe_u.AppendChild(xe_a4);
    146            //将User节点插入到dbGuest
    147            xn.AppendChild(xe_u);
    148            //保存XML文件
    149            xd.Save(Server.MapPath("\\xml\\xml\\doc.xml"));
    150            fill();
    151        }
    152
    153        private void Button4_Click(object sender, System.EventArgs e)
    154        {//修改邮件地址动作
    155            XmlDocument xd=new XmlDocument();
    156            xd.Load(Server.MapPath("\\xml\\xml\\doc.xml"));//载入XML文件
    157            XmlNodeList xnl=xd.SelectSingleNode("dbGuest").ChildNodes;//获取dbGuest节点的全部子节点
    158            foreach(XmlNode xn in xnl)//迭代所有子节点
    159            {
    160                XmlElement xe=(XmlElement)xn;//将迭代到的子节点转换成XmlElement类型
    161                XmlNodeList xnl2=xe.GetElementsByTagName("Name");//返回所有Name列的数据
    162                if(xnl2.Count>0)//如果大于零就表示有撒,
    163                {
    164                    if(xnl2[0].InnerText==ddl.SelectedItem.Text)//如果该列有和被下拉列表中返回的值一样的数据的话
    165                    {
    166                        XmlNodeList xnl3=xe.ChildNodes;//再获取下面所有的子节点
    167                        foreach(XmlNode xn1 in xnl3)//再迭代子集
    168                        {
    169                            XmlElement xe2=(XmlElement)xn1;//转换类型
    170                            if(xe2.Name=="Email")//如果节点名字是Email的话
    171                            {
    172                                xe2.InnerText=tbn.Text;//该节点的值就替换成文本框中的
    173                                break;
    174                            }
    175                        }
    176                        break;
    177                    }
    178                }
    179            }
    180            xd.Save(Server.MapPath("\\xml\\xml\\doc.xml"));
    181            fill();
    182        }
    183    }
    184}
    185
    XML文件代码
    1<?xml version="1.0" encoding="utf-8"?>
    2<dbGuest>
    3  <User>
    4    <Name></Name>
    5    <City>江油</City>
    6    <Email>7665@fds.com</Email>
    7    <Time>2006-5-6 16:10:56</Time>
    8  </User>
    9  <User>
    10    <Name></Name>
    11    <City>绵阳</City>
    12    <Email>th@DFs.com</Email>
    13    <Time>2006-5-6 16:06:51</Time>
    14  </User>
    15  <User>
    16    <Name>黄小梅</Name>
    17    <City>南充</City>
    18    <Email>5543@ds.com</Email>
    19    <Time>2006-5-6 16:07:15</Time>
    20  </User>
    21</dbGuest>

  • 相关阅读:
    VUE ElementUI Tree JAVA Mybatis实现 麦克斯
    VUE 创建工程 项目 麦克斯
    Go——关于Time包
    etcd——是什么做什么如何用
    php——composer安装与使用
    TinyXml——Linux下TinyXml的编译
    Mac下eclipse安装 lombok 插件
    gitlab——搭建私有gitlab服务
    apachehttpd——Linux/Mac源码安装apachehttpd
    mongo——通过docker查看mongo集群的状态和数据
  • 原文地址:https://www.cnblogs.com/carl2380/p/1915688.html
Copyright © 2011-2022 走看看