C#(Asp.net)对XML文件增、删、改、查(基于DOM)

本文介绍了一个使用ASP.NET读取和操作XML文件的应用实例。通过C#代码实现了XML数据的查询、添加、删除及属性遍历等功能,并展示了如何将XML数据绑定到网页上的DataGrid控件。

asp.net文件xmlMain.aspx 和people.xml文件在同一目录下

前台html文件

 

<%@ Page language="c#" Codebehind="xmlMain.aspx.cs" AutoEventWireup="false" Inherits="xmlDocWeb.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    
<HEAD>
        
<title>WebForm1</title>
        
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        
<meta name="CODE_LANGUAGE" Content="C#">
        
<meta name="vs_defaultClientScript" content="JavaScript">
        
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    
</HEAD>
    
<body MS_POSITIONING="GridLayout" style="FONT-SIZE:10pt">
        
<form id="Form1" method="post" runat="server">
            
<FONT face="宋体">
                
<asp:DataGrid id="grd" style="Z-INDEX: 101; LEFT: 80px; POSITION: absolute; TOP: 40px" runat="server"
                    Width
="456px"></asp:DataGrid>
                
<asp:Button id="btnAttributes" style="Z-INDEX: 122; LEFT: 352px; POSITION: absolute; TOP: 448px"
                    runat
="server" Text="遍历属性"></asp:Button>
                
<asp:Button id="Button1" style="Z-INDEX: 121; LEFT: 80px; POSITION: absolute; TOP: 424px" tabIndex="6"
                    runat
="server" Text="修改"></asp:Button>
                
<asp:TextBox id="txttel2" style="Z-INDEX: 120; LEFT: 80px; POSITION: absolute; TOP: 384px" tabIndex="5"
                    runat
="server"></asp:TextBox>
                
<asp:Label id="Label7" style="Z-INDEX: 119; LEFT: 80px; POSITION: absolute; TOP: 360px" runat="server">修改用户电话</asp:Label>
                
<asp:Button id="btnAdd" style="Z-INDEX: 118; LEFT: 352px; POSITION: absolute; TOP: 408px" runat="server"
                    Text
="添加"></asp:Button>
                
<asp:TextBox id="txtemail" style="Z-INDEX: 117; LEFT: 384px; POSITION: absolute; TOP: 368px"
                    runat
="server" Width="136px" tabIndex="11"></asp:TextBox>
                
<asp:TextBox id="txttel" style="Z-INDEX: 116; LEFT: 384px; POSITION: absolute; TOP: 336px" runat="server"
                    Width
="136px" tabIndex="10"></asp:TextBox>
                
<asp:TextBox id="txtaddress" style="Z-INDEX: 115; LEFT: 384px; POSITION: absolute; TOP: 304px"
                    runat
="server" Width="136px" tabIndex="9"></asp:TextBox>
                
<asp:TextBox id="txtid" style="Z-INDEX: 114; LEFT: 384px; POSITION: absolute; TOP: 280px" runat="server"
                    Width
="136px" tabIndex="8"></asp:TextBox>
                
<asp:Label id="Label6" style="Z-INDEX: 113; LEFT: 328px; POSITION: absolute; TOP: 368px" runat="server">Email</asp:Label>
                
<asp:Label id="Label5" style="Z-INDEX: 112; LEFT: 328px; POSITION: absolute; TOP: 344px" runat="server">TEL</asp:Label>
                
<asp:Label id="Label4" style="Z-INDEX: 111; LEFT: 320px; POSITION: absolute; TOP: 312px" runat="server">ADDRESS</asp:Label>
                
<asp:Label id="Label3" style="Z-INDEX: 110; LEFT: 320px; POSITION: absolute; TOP: 280px" runat="server">ID</asp:Label>
                
<asp:TextBox id="txtName2" style="Z-INDEX: 109; LEFT: 384px; POSITION: absolute; TOP: 248px"
                    runat
="server" Width="136px" tabIndex="7"></asp:TextBox>
                
<asp:Label id="Label2" style="Z-INDEX: 108; LEFT: 320px; POSITION: absolute; TOP: 248px" runat="server">Name</asp:Label>
                
<asp:Label id="Label1" style="Z-INDEX: 107; LEFT: 320px; POSITION: absolute; TOP: 216px" runat="server">添加用户信息</asp:Label>
                
<asp:TextBox id="txtname" style="Z-INDEX: 106; LEFT: 80px; POSITION: absolute; TOP: 280px" runat="server"
                    Width
="120px" tabIndex="3"></asp:TextBox>
                
<asp:Button id="btndel" style="Z-INDEX: 105; LEFT: 80px; POSITION: absolute; TOP: 312px" runat="server"
                    Text
="删除" tabIndex="4"></asp:Button>
                
<asp:Label id="lblTel" style="Z-INDEX: 104; LEFT: 192px; POSITION: absolute; TOP: 224px" runat="server">Label</asp:Label>
                
<asp:Button id="btnQuery" style="Z-INDEX: 103; LEFT: 80px; POSITION: absolute; TOP: 248px" runat="server"
                    Text
="查询" tabIndex="2"></asp:Button>
                
<asp:DropDownList id="ddlName" style="Z-INDEX: 102; LEFT: 80px; POSITION: absolute; TOP: 216px" runat="server"
                    Width
="95px" Height="78px" tabIndex="1"></asp:DropDownList></FONT>
        
</form>
    
</body>
</HTML>

 后台C#文件

 

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.Xml.XPath;
using System.Text;


namespace xmlDocWeb
{
    
/// <summary>
    
/// WebForm1 的摘要说明。
    
/// </summary>
    
/// 把xml传到客户端处理,充分利用客户端的资源

    public class WebForm1 : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.DropDownList ddlName;
        
protected System.Web.UI.WebControls.Button btnQuery;
        
protected System.Web.UI.WebControls.Label lblTel;
        
protected System.Web.UI.WebControls.Button btndel;
        
protected System.Web.UI.WebControls.TextBox txtname;
        
protected System.Web.UI.WebControls.Label Label1;
        
protected System.Web.UI.WebControls.Label Label2;
        
protected System.Web.UI.WebControls.TextBox txtName2;
        
protected System.Web.UI.WebControls.Label Label3;
        
protected System.Web.UI.WebControls.Label Label4;
        
protected System.Web.UI.WebControls.Label Label5;
        
protected System.Web.UI.WebControls.Label Label6;
        
protected System.Web.UI.WebControls.TextBox txtid;
        
protected System.Web.UI.WebControls.TextBox txtaddress;
        
protected System.Web.UI.WebControls.TextBox txttel;
        
protected System.Web.UI.WebControls.TextBox txtemail;
        
protected System.Web.UI.WebControls.Button btnAdd;
        
protected System.Web.UI.WebControls.Label Label7;
        
protected System.Web.UI.WebControls.TextBox txttel2;
        
protected System.Web.UI.WebControls.Button Button1;
        
protected System.Web.UI.WebControls.Button btnAttributes;
        
protected System.Web.UI.WebControls.DataGrid grd;
        StringBuilder str;
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
if(!IsPostBack)
            
{
                
this.Bind();
            }

            
//this.btndel.Attributes.Add("onclick","javasrcipt:return confirm('delete?');");
        }


        
Web 窗体设计器生成的代码

        
private void Bind()
        
{
            DataSet ds 
= new DataSet();
            ds.ReadXml(Server.MapPath(
"people.xml"));
            grd.DataSource 
= ds.Tables[0].DefaultView;
            grd.DataBind();

            XmlDocument doc 
= new XmlDocument();
            
            doc.Load(Server.MapPath(
"people.xml"));
            XmlNodeList elemlist 
= doc.GetElementsByTagName("Name");
            
this.ddlName.Items.Clear();

            
for(int i = 0; i<elemlist.Count;i++)
            
{
                
this.ddlName.Items.Add(elemlist[i].InnerXml);
            }

            
//Response.Write(doc.DocumentElement.SelectSingleNode("person[Name='accp']/Tel").InnerXml);
        }


        
private void btnQuery_Click(object sender, System.EventArgs e)
        
{
            XmlDocument doc 
= new XmlDocument();
            doc.Load(Server.MapPath(
"people.xml"));
            
            
if(doc.SelectSingleNode("//person[Name='"+this.ddlName.SelectedItem.Text+"' ]/Tel"!= null)
            
{
                
this.lblTel.Text = doc.SelectSingleNode("//person[Name='"+this.ddlName.SelectedItem.Text+"' ]/Tel").InnerXml;
            }

            
else
            
{
                
this.lblTel.Text = "没有联系电话";
            }

        }


        
private void btndel_Click(object sender, System.EventArgs e)
        
{

            XmlDocument xmlDoc 
= new XmlDocument();
            xmlDoc.Load(Server.MapPath(
"people.xml"));

//            XmlNodeList xnlist = xmlDoc.SelectSingleNode("people").ChildNodes;
//            
//            foreach(XmlNode xnode in xnlist)
//            {
//                XmlElement xe = (XmlElement)xnode;
//                XmlNodeList nodes = xe.GetElementsByTagName("Name");
//                if(nodes.Count > 0 )
//                {
//                    if(nodes[0].InnerText == this.ddlName.SelectedItem.Text)                    
//                        xe.RemoveAll();                        
//                        break;
//                }
//            }

            
            
//XmlNode node = xmlDoc.DocumentElement.SelectSingleNode("person[Name='"+this.ddlName.SelectedItem.Text+"' ]");
            if(this.txtname.Text=="")
            
{
            
                Response.Write(
"<script language='javascript'>alert('请输入.....!');</script>");
                
            }

            
else
            
{
            
                XmlNode node 
= xmlDoc.DocumentElement.SelectSingleNode("person[Name='"+this.txtname.Text+"' ]");
                
if(node != null)
                
{

                    xmlDoc.DocumentElement.RemoveChild(node);
                    xmlDoc.Save(Server.MapPath(
"people.xml"));
                    
this.Bind();
                }

                
else
                
{
                    Response.Write(
"<script language='javascript'>alert('此用户不存在!');</script>");
                }

            }

        }


        
private void btnAdd_Click(object sender, System.EventArgs e)
        
{
            XmlDocument xmldoc 
= new XmlDocument();
            xmldoc.Load(Server.MapPath(
"people.xml"));

            XmlNodeList xnlist 
= xmldoc.SelectSingleNode("people").ChildNodes;
            
for(int i = 0; i < xnlist.Count; i++)
            
{
                XmlNode node 
= xmldoc.DocumentElement.SelectNodes("//person/@id")[i];
                
if(this.txtid.Text==node.InnerText)
                
{
                    Response.Write(
"<script language='javascript'>alert('此ID号已存在!');</script>");
                    
return;
                }
                
            }




            
//----创建元素------
            XmlElement name = xmldoc.CreateElement("Name");
            XmlElement address 
= xmldoc.CreateElement("Address");
            XmlElement tel 
= xmldoc.CreateElement("Tel");
            XmlElement email 
= xmldoc.CreateElement("Email");

            XmlElement person 
= xmldoc.CreateElement("person");
            
            
//----赋值------
            name.InnerText = this.txtName2.Text.Trim();
            address.InnerText 
= this.txtaddress.Text.Trim();
            tel.InnerText 
= this.txttel.Text.Trim();
            email.InnerText 
= this.txtemail.Text.Trim();
            person.SetAttribute(
"id",this.txtid.Text.Trim());

            person.AppendChild(name);
            person.AppendChild(address);
            person.AppendChild(tel);
            person.AppendChild(email);

            xmldoc.DocumentElement.AppendChild(person);

            xmldoc.Save(Server.MapPath(
"people.xml"));
            
this.Bind();        

        }


        
private void Button1_Click(object sender, System.EventArgs e)
        
{
            XmlDocument xmldoc 
= new XmlDocument();

            xmldoc.Load(Server.MapPath(
"people.xml"));

            XmlNode node 
= xmldoc.DocumentElement.SelectSingleNode("person[Name='"+ this.ddlName.SelectedItem.Text + "']/Tel");
            node.InnerText 
= this.txttel2.Text.Trim();

            xmldoc.Save(Server.MapPath(
"people.xml"));

            
this.Bind();
        }


        
private void btnAttributes_Click(object sender, System.EventArgs e)
        
{
            XmlDocument xmldoc 
= new XmlDocument();
            xmldoc.Load(Server.MapPath(
"people.xml"));
            XmlElement root 
= xmldoc.DocumentElement;    
            
            
for(int i = 0; i<root.ChildNodes.Count;i++)
            
{            
                str 
= new StringBuilder();
                str.Append(root.ChildNodes[i].Attributes[
0].InnerText);
                
//Response.Write(str);
                
//Response.Write("<script language = 'javascript'>alert("+str+");</script>");
            }
            
            Response.Write(str);        
            
        }

                
    }

}

 

XML文件

 

<?xml version="1.0" encoding="gb2312"?>
<people>
  
<person id="e09" city="xuzhou">
    
<Name>ljy</Name>
    
<Address>jangsu dafeng</Address>
    
<Tel>138</Tel>
    
<Email>ljy@126.com</Email>
  
</person>
  
<person id="e10" city="nanjing">
    
<Name>accp</Name>
    
<Address>xuzhou</Address>
    
<Tel>9999</Tel>
    
<Email>accp@126.com</Email>
  
</person>
  
<person id="e11">
    
<Name>jack</Name>
    
<Address>jiangsu najing</Address>
    
<Tel>025-987</Tel>
    
<Email>jack@126.com</Email>
  
</person>
  
<person id="12">
    
<Name>xxxuuu</Name>
    
<Address>jiang su dafeng</Address>
    
<Tel>123</Tel>
    
<Email>123@yahoo.com</Email>
  
</person>
</people>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值