C#操作Xml(增删改查)练习时间:2022-10-20 23:28:59web.config配置: <appSettings> <add key="xmlFile" value="xml/class.xml"/> </appSettings> 前台:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="test_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title>C#操作Xml(增删改查)练习</title></head><body> <form id="form1" runat="server"> <div id="showXml" runat="server"> 显示Xml文档 </div> <div style="background-color:Green;color:Yellow;" mce_style="background-color:Green;color:Yellow;">为html控件绑定服务器控件的两个要点:<br /> 1.onserverclick="serverMethod"这里只写方法名.<br /> 2.后台代码,必须是<br /> protected void XmlAdd(object sender, EventArgs e){}<br /> 注意两个参数及保护级. </div> <input id="btnAdd" type="button" value="add" runat="server" onserverclick="XmlAdd" /> <input id="btnDelete" type="button" value="delete" runat="server" onserverclick="XmlDelete" /> <input id="btnUpdate" type="button" value="update" runat="server" onserverclick="XmlUpdate" /> <input id="btnQuery" type="button" value="query" runat="server" onserverclick="XmlQuery" /> </form></body></html> 后台: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 test_Default : System.Web.UI.Page{ string xmlFile = System.Configuration.ConfigurationManager.AppSettings["xmlFile"]; XmlDocument XmlDoc = new XmlDocument(); protected void Page_Load(object sender, EventArgs e) { Bind(); } private void Bind() { XmlDoc.Load(Server.MapPath("../" + xmlFile));//向上一级 this.showXml.InnerHtml = System.Web.HttpUtility.HtmlEncode(XmlDoc.InnerXml); } protected void XmlAdd(object sender, EventArgs e) { XmlNode objRootNode = XmlDoc.SelectSingleNode("//Root"); //声明XmlNode对象 XmlElement objChildNode = XmlDoc.CreateElement("Student"); //创建XmlElement对象 objChildNode.SetAttribute("id", "1"); objRootNode.AppendChild(objChildNode); // XmlElement objElement = XmlDoc.CreateElement("Name");//???结点和元素的区别?方法都一样. objElement.InnerText = "tree1"; objChildNode.AppendChild(objElement); //保存 XmlDoc.Save(Server.MapPath("../" + xmlFile)); } protected void XmlDelete(object sender, EventArgs e) { string Node = "//Root/Student[Name='tree1']";//Xml是严格区分大小写的. XmlDoc.SelectSingleNode(Node).ParentNode.RemoveChild(XmlDoc.SelectSingleNode(Node)); //保存 XmlDoc.Save(Server.MapPath("../" + xmlFile)); } protected void XmlUpdate(object sender, EventArgs e) { //XmlDoc.SelectSingleNode("//Root/Student[Name='tree1']/Name").InnerText = "tree2"; XmlDoc.SelectSingleNode("//Root/Student[Name='tree1']").Attributes["id"].Value = "001"; //保存 XmlDoc.Save(Server.MapPath("../" + xmlFile)); } protected void XmlQuery(object sender, EventArgs e) { XmlNodeList NodeList = XmlDoc.SelectNodes("//Root/Student");//查询全部的student节点 //循环遍历节点,查询是否存在该节点 for (int i = 0; i < NodeList.Count; i++) { Response.Write(NodeList[i].ChildNodes[0].InnerText); } //查询单个节点,//表示全部匹配的元素./表示以此为根的子元素.javascript下的查询也是一样. string XmlPathNode = "//Root/Student[Name='rock']/Photo"; Response.Write(XmlDoc.SelectSingleNode(XmlPathNode).InnerText); }} xml文件:<?xml version="1.0" encoding="gb2312"?><Root> <Student Admin="no"> <Name>rock</Name> <NickName>rock1</NickName> <Pwd>123</Pwd> <Sex>男生</Sex> <Birthday>1986-1-1</Birthday> <Email>xymac@163.com</Email> <QQ>123374355</QQ> <Msn>loveplc@live.cn</Msn> <Tel>13005129336</Tel> <Homepage>http://www.loveplc.cn</Homepage> <Address>广州</Address> <Work>asp.net菜鸟</Work> <Photo>images/rock.gif</Photo> <Time>2008-3-18 10:15:29</Time> </Student> <Student Admin="yes"> <Name>tree</Name> <NickName>宿舍老大</NickName> <Pwd>51aspx</Pwd> <Sex>男生</Sex> <Birthday> </Birthday> <Email>support@tree.com</Email> <QQ> </QQ> <Msn> </Msn> <Tel> </Tel> <Homepage> </Homepage> <Address> </Address> <Work> </Work> <Photo> </Photo> <Time>2008-3-26 11:39:57</Time> </Student> <Student> <Name>tree2</Name> </Student> <Student id="001"> <Name>tree1</Name> </Student></Root>