ITPub博客

首页 > Linux操作系统 > Linux操作系统 > .Net中操作XmlDocument对象集锦 - XML做数据库的管理程序

.Net中操作XmlDocument对象集锦 - XML做数据库的管理程序

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-01-12 16:35:43 0 删除 编辑

具体效果如下  ,因为是上课用的例题,所以比较全

广告列表 功能选项
阿里妈妈广告 Google广告
广告名字:
广告图片:
链接网址:
        
Name Image Alink
阿里妈妈广告 ~/image/aaa.gif http://www.thc违规广告/bbs
天轰穿的淘宝小店 ~/image/fdfd.jpeg http://shop.thc违规广告/

 

 

前台代码如下
  1<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2
  3http://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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5347228