asp.net(C#) Xml操作(增删改查)练习

  web.config配置:

  

复制代码 代码如下:

  <appSettings>

  <add key="xmlFile" value="xml/class.xml"/>

  </appSettings>

  <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;" 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>

  <%@ 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;" 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);

  }

  }

  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>[email protected]</Email>

  <QQ>123374355</QQ>

  <Msn>[email protected]</Msn>

  <Tel>13005129336</Tel>

  <Homepage>http://www.glzy8.com</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>[email protected]</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>