.Net中操作XmlDocument物件集錦 - XML做資料庫的管理程式

iDotNetSpace發表於2009-01-12

具體效果如下  ,因為是上課用的例題,所以比較全

廣告列表 功能選項
阿里媽媽廣告 Google廣告
廣告名字:
廣告圖片:
連結網址:
        
Name Image Alink
阿里媽媽廣告 ~/image/aaa.gif http://www.thc違規廣告/bbs
天轟穿的淘寶小店 ~/image/fdfd.jpeg http://shop.thc違規廣告/

 

 

前臺程式碼如下
  1
  2
  3ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4
  5http://www.w3.org/1999/xhtml">
  6


  7    無標題頁
  8   
  9        .style1
 10        {}{
 11            width: 173px;
 12        }
 13        .style2
 14        {}{
 15            width: 173px;
 16            height: 26px;
 17        }
 18        .style4
 19        {}{
 20        }
 21        .style5
 22        {}{
 23            width: 103px;
 24        }
 25        .style6
 26        {}{
 27            height: 26px;
 28            width: 475px;
 29        }
 30        .style7
 31        {}{
 32            width: 475px;
 33        }
 34   
 35
 36
 37   
 38   

 39   
 40       
 41           
 42               
 44               
 46           
 47           
 48               
 53               
 89           
 90       

 43                    廣告列表

 45                    功能選項

 49                     50                        nselectedindexchanged="ListBox1_SelectedIndexChanged" Width="182px">
 51                   

 52               

 54                   
 55                       
 56                           
 58                           
 61                       
 62                       
 63                           
 65                           
 68                       
 69                       
 70                           
 72                           
 75                       
 76                       
 77                           
 86                       
 87                   

 57                                廣告名字:

 59                               
 60                           

 64                                廣告圖片:

 66                               
 67                           

 71                                連結網址:

 73                               
 74                           

 78 
 79  
 80                               
 81 
 82                               
 83 
 84                               
 85                           

 88               

 91   
 92   

 93     94        BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" CellPadding="4">
 95       
 96       
 97       
 98       
 99       
100   

101   
102
103
104
 

default.aspx.cs檔案的全部程式碼
  1using System;
  2using System.Configuration;
  3using System.Data;
  4using System.Web;
  5using System.Web.Security;
  6using System.Web.UI;
  7using System.Web.UI.HtmlControls;
  8using System.Web.UI.WebControls;
  9using System.Web.UI.WebControls.WebParts;
 10
 11using System.Xml;
 12
 13public partial class _Default : System.Web.UI.Page
 14{
 15    protected void Page_Load(object sender, EventArgs e)
 16    {//頁面載入
 17        string fpath = Server.MapPath("~/App_Data/Ad.xml");
 18
 19        if (System.IO.File.Exists(fpath))//如果指定的XML檔案已經存在,那麼就不顯示建立XML檔案的按鈕
 20        {
 21            Button4.Visible = false;
 22            if(!IsPostBack)//如果頁面是回發的話就不用載入了,不是回發的才載入
 23                Bind();
 24        }
 25
 26       
 27    }
 28
 29    private void Bind()
 30    {
 31        ListBox1.Items.Clear();//為了不引起載入重複值,先清理ListBox1裡面的項,簡單來說就是每次載入項都是全新的
 32        XmlDocument xd = GetXdt();
 33
 34        //獲取跟節點下的所有子節點
 35        //XmlNodeList xnl = xd.SelectNodes("descendant::Ad[/AdList]");//或者使用下面這句,如果不清楚意思的參考Xpath語言
 36        //XmlNodeList xnl = xd.SelectNodes("AdList/Ad");//再或者使用下面這句
 37        XmlNodeList xnl = xd.DocumentElement.ChildNodes;
 38        foreach (XmlNode xn in xnl)
 39        {
 40            ListBox1.Items.Add(xn.FirstChild.InnerText);
 41        }
 42
 43        //========填充GridView
 44        string fpath = Server.MapPath("~/App_Data/Ad.xml");
 45        DataSet ds = new DataSet();
 46        ds.ReadXml(fpath);//將XML文件載入到DataSet中去, 看到這裡, 我想大家應該能夠想到,是否我們可以所有增刪改的操作都在DataSet中來完成呢?
 47        GridView1.DataSource = ds.Tables[0].DefaultView;
 48        GridView1.DataBind();
 49    }
 50
 51    /**////


 52    /// 返回一個 XmlDocument 物件
 53    ///

 54    ///
 55    private XmlDocument GetXdt()
 56    {
 57        string fpath = Server.MapPath("~/App_Data/Ad.xml");
 58        XmlDocument xd = new XmlDocument();
 59        xd.Load(fpath);
 60
 61        return xd;
 62    }
 63    protected void Button4_Click(object sender, EventArgs e)
 64    {//建立XML文件
 65        XmlDocument xd = new XmlDocument();
 66        xd.LoadXml("");
 67
 68        xd.Save(Server.MapPath("Ad.xml"));
 69        Button4.Visible = false;
 70    }
 71    protected void Button1_Click(object sender, EventArgs e)
 72    {//新增廣告
 73        string fpath = Server.MapPath("~/App_Data/Ad.xml");
 74        XmlDocument xd = GetXdt();
 75
 76        第一種新增節點的方法#region 第一種新增節點的方法
 77        /**//*
 78        //建立一個廣告節點元素
 79        XmlNode xn = xd.CreateNode(XmlNodeType.Element, "Ad", null);
 80        //新增廣告名節點
 81        XmlNode xnname = xd.CreateNode(XmlNodeType.Element, "Name", null);
 82        xnname.InnerText = tb_name.Text;
 83        xn.AppendChild(xnname);
 84        //新增廣告圖片地址節點
 85        XmlNode xnimg = xd.CreateNode(XmlNodeType.Element, "Image", null);
 86        xnimg.InnerText = tb_img.Text;
 87        xn.AppendChild(xnimg);
 88        //新增廣告連結指向地址
 89        XmlNode xnlink = xd.CreateNode(XmlNodeType.Element, "Alink", null);
 90        xnlink.InnerText = tb_link.Text;
 91        xn.AppendChild(xnlink);
 92         * */
 93        #endregion
 94       
 95        第二種新增節點的方法#region 第二種新增節點的方法
 96
 97        XmlNode xn = xd.CreateNode(XmlNodeType.Element, "Ad", null);
 98        xn.InnerXml = "" + tb_name.Text + "" + tb_img.Text + "" + tb_link.Text + "";
 99
100        #endregion
101        xd.DocumentElement.AppendChild(xn);//將整個大的節點新增到跟節點下面
102        xd.Save(fpath);
103        Bind();
104    }
105    protected void Button2_Click(object sender, EventArgs e)
106    {//修改節點  天轟穿的淘寶小店 http://shop.thc違規廣告/
107        string fpath = Server.MapPath("~/App_Data/Ad.xml");
108        XmlDocument xd = GetXdt();
109
110        XmlNodeList xnl = xd.SelectNodes("AdList/Ad");//找到所有的單個廣告節點,另外種方法參考下面ListBox1_SelectedIndexChanged方法
111        foreach (XmlNode xn in xnl)//迭代所有廣告
112        {
113            if (xn.FirstChild.InnerText == ListBox1.SelectedItem.Text)//要這樣判斷的前提是,你的XML檔案中當前節點第一個欄位肯定一定確定是ListBox1.SelectedItem.Text所顯示的值
114            {
115                for (int i = 0; i < xn.ChildNodes.Count; i++)
116                { //迴圈當前節點的所有子節點
117                    switch (i)
118                    {
119                        case 0:
120                            xn.ChildNodes[i].InnerText = tb_name.Text;
121                            break;
122                        case 1:
123                            xn.ChildNodes[i].InnerText = tb_img.Text;
124                            break;
125                        case 2:
126                            xn.ChildNodes[i].InnerText = tb_link.Text;
127                            break;
128                    }
129                }
130            }
131        }
132
133        xd.Save(fpath);
134        Bind();
135    }
136    protected void Button3_Click(object sender, EventArgs e)
137    {//刪除節點
138        string fpath = Server.MapPath("~/App_Data/Ad.xml");
139        XmlDocument xd = GetXdt();
140
141        第一種方法,比較浪費資源  http://shop.thc違規廣告/#region 第一種方法,比較浪費資源  http://shop.thc違規廣告/
142        //XmlNodeList xnl = xd.SelectNodes("AdList/Ad");
143        //foreach (XmlNode xn in xnl)
144        //{
145        //    //要下面這樣判斷的前提是,你的XML檔案中當前節點第一個欄位肯定一定確定是ListBox1.SelectedItem.Text所顯示的值
146        //    if (xn.FirstChild.InnerText == ListBox1.SelectedItem.Text)
147        //        xd.DocumentElement.RemoveChild(xn);
148        //}
149        #endregion
150
151        第二種方法,比較直接,建議學習下Xpath相關的知識#region 第二種方法,比較直接,建議學習下Xpath相關的知識
152        string xpath = "/AdList/Ad[Name='" + ListBox1.SelectedItem.Text + "']";
153        XmlNode xn = xd.SelectSingleNode(xpath);
154
155        xn.ParentNode.RemoveChild(xn);
156        #endregion
157
158
159        xd.Save(fpath);
160        Bind();
161    }
162    protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
163    {//點選廣告填充右邊文字框  http://shop.thc違規廣告/
164        XmlDocument xd = GetXdt();
165
166        第一種方法#region 第一種方法
167        //XmlNodeList xnl = xd.SelectNodes("AdList/Ad");//找到所有的單個廣告節點
168        //foreach (XmlNode xn in xnl)//迭代所有廣告
169        //{
170        //    if (xn.FirstChild.InnerText == ListBox1.SelectedItem.Text)//要這樣判斷的前提是,你的XML檔案中當前節點第一個欄位肯定一定確定是ListBox1.SelectedItem.Text所顯示的值,否則你別罵川哥哥騙你哈,俺絕對是好人
171        //    {
172        //        for (int i = 0; i < xn.ChildNodes.Count; i++)
173        //        { //迴圈當前節點的所有子節點
174        //            switch (i)
175        //            {
176        //                case 0:
177        //                   tb_name.Text = xn.ChildNodes[i].InnerText;
178        //                    break;
179        //                case 1:
180        //                   tb_img.Text = xn.ChildNodes[i].InnerText;
181        //                    break;
182        //                case 2:
183        //                   tb_link.Text = xn.ChildNodes[i].InnerText;
184        //                    break;
185        //            }
186        //        }
187        //    }
188        //}
189        #endregion
190
191        第二種方法#region 第二種方法
192        string xpath = "/AdList/Ad[Name='" + ListBox1.SelectedItem.Text + "']";
193        XmlNode xn = xd.SelectSingleNode(xpath);
194
195        for (int i = 0; i < xn.ChildNodes.Count; i++)
196        { //迴圈當前節點的所有子節點
197            switch (i)
198            {
199                case 0:
200                    tb_name.Text = xn.ChildNodes[i].InnerText;
201                    break;
202                case 1:
203                    tb_img.Text = xn.ChildNodes[i].InnerText;
204                    break;
205                case 2:
206                    tb_link.Text = xn.ChildNodes[i].InnerText;
207                    break;
208            }
209        }
210        #endregion
211    }
212}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-536507/,如需轉載,請註明出處,否則將追究法律責任。

相關文章