.aspx文件
View Code
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
XmlTest.aspx.cs
"
Inherits
=
"
XmlTest
"
validateRequest
=
"
false
"
%>
<! 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 > XML操作练习 </ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
< asp:LinkButton ID ="LinkButtonCreate" runat ="server" OnClick ="LinkButtonCreate_Click" > 创建Xml文件 </ asp:LinkButton >
< asp:LinkButton ID ="LinkButtonAdd" runat ="server" OnClick ="LinkButtonAdd_Click" > 批量添加Book结点 </ asp:LinkButton >
< asp:LinkButton ID ="LinkButtonShow" runat ="server" OnClick ="LinkButtonShow_Click" > 显示Xml内容 </ asp:LinkButton >
< asp:LinkButton ID ="LinkButtonDel" runat ="server" OnClick ="LinkButtonDel_Click" > 删除全部结点 </ asp:LinkButton >
< hr />
子结点名: < asp:TextBox ID ="TextBoxNode" runat ="server" > author </ asp:TextBox >
子结点值: < asp:TextBox ID ="TextBoxNodeValue" runat ="server" > 张三 </ asp:TextBox >
< asp:LinkButton ID ="LinkButtonSearchNode" runat ="server" onclick ="LinkButtonSearchNode_Click" > 查找结点 </ asp:LinkButton >
修改子结点值: < asp:TextBox ID ="TextBoxEditNodeValue" runat ="server" ></ asp:TextBox >
< asp:LinkButton ID ="LinkButtonEdit" runat ="server" OnClick ="LinkButtonSearchNode_Click" > 修改结点 </ asp:LinkButton >
< asp:LinkButton ID ="LinkButtonDelNode" runat ="server" OnClick ="LinkButtonDelNode_Click" > 删除结点(可以删除多个结点) </ asp:LinkButton >
< hr />
book属性Id值: < asp:TextBox ID ="TextBoxAttribute" runat ="server" > 2 </ asp:TextBox >
子结点: < asp:TextBox ID ="TextBoxChildNode" runat ="server" ></ asp:TextBox >
< asp:LinkButton ID ="LinkButtonSearch" runat ="server" onclick ="LinkButtonSearch_Click" > 查找 </ asp:LinkButton >
< br />
属性名称: < asp:TextBox ID ="TextBoxAttributeName" runat ="server" ></ asp:TextBox >
属性值: < asp:TextBox ID ="TextBoxAttributeValue" runat ="server" ></ asp:TextBox >
< asp:LinkButton ID ="LinkButtonAdd2" runat ="server" OnClick ="LinkButtonAdd2_Click" > 添加修改属性 </ asp:LinkButton >
< asp:LinkButton ID ="LinkButtonDelAttribute" runat ="server" OnClick ="LinkButtonDelAttribute_Click" > 删除属性 </ asp:LinkButton >
< hr />
< asp:Label ID ="Label1" runat ="server" Text ="这里显示提示信息!" ForeColor ="#FF3300" ></ asp:Label >
< hr />
< asp:TextBox ID ="TextBox1" runat ="server" Height ="330px" Width ="617px" TextMode ="MultiLine" ></ asp:TextBox >
< iframe id ="IframeTT" runat ="server" src ="xml/booktest.xml" height ="330px" width ="617px" frameborder ="1" style ="border-style: solid; border-width: 0px" ></ iframe >
</ div >
</ form >
</ body >
</ html >
<! 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 > XML操作练习 </ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
< asp:LinkButton ID ="LinkButtonCreate" runat ="server" OnClick ="LinkButtonCreate_Click" > 创建Xml文件 </ asp:LinkButton >
< asp:LinkButton ID ="LinkButtonAdd" runat ="server" OnClick ="LinkButtonAdd_Click" > 批量添加Book结点 </ asp:LinkButton >
< asp:LinkButton ID ="LinkButtonShow" runat ="server" OnClick ="LinkButtonShow_Click" > 显示Xml内容 </ asp:LinkButton >
< asp:LinkButton ID ="LinkButtonDel" runat ="server" OnClick ="LinkButtonDel_Click" > 删除全部结点 </ asp:LinkButton >
< hr />
子结点名: < asp:TextBox ID ="TextBoxNode" runat ="server" > author </ asp:TextBox >
子结点值: < asp:TextBox ID ="TextBoxNodeValue" runat ="server" > 张三 </ asp:TextBox >
< asp:LinkButton ID ="LinkButtonSearchNode" runat ="server" onclick ="LinkButtonSearchNode_Click" > 查找结点 </ asp:LinkButton >
修改子结点值: < asp:TextBox ID ="TextBoxEditNodeValue" runat ="server" ></ asp:TextBox >
< asp:LinkButton ID ="LinkButtonEdit" runat ="server" OnClick ="LinkButtonSearchNode_Click" > 修改结点 </ asp:LinkButton >
< asp:LinkButton ID ="LinkButtonDelNode" runat ="server" OnClick ="LinkButtonDelNode_Click" > 删除结点(可以删除多个结点) </ asp:LinkButton >
< hr />
book属性Id值: < asp:TextBox ID ="TextBoxAttribute" runat ="server" > 2 </ asp:TextBox >
子结点: < asp:TextBox ID ="TextBoxChildNode" runat ="server" ></ asp:TextBox >
< asp:LinkButton ID ="LinkButtonSearch" runat ="server" onclick ="LinkButtonSearch_Click" > 查找 </ asp:LinkButton >
< br />
属性名称: < asp:TextBox ID ="TextBoxAttributeName" runat ="server" ></ asp:TextBox >
属性值: < asp:TextBox ID ="TextBoxAttributeValue" runat ="server" ></ asp:TextBox >
< asp:LinkButton ID ="LinkButtonAdd2" runat ="server" OnClick ="LinkButtonAdd2_Click" > 添加修改属性 </ asp:LinkButton >
< asp:LinkButton ID ="LinkButtonDelAttribute" runat ="server" OnClick ="LinkButtonDelAttribute_Click" > 删除属性 </ asp:LinkButton >
< hr />
< asp:Label ID ="Label1" runat ="server" Text ="这里显示提示信息!" ForeColor ="#FF3300" ></ asp:Label >
< hr />
< asp:TextBox ID ="TextBox1" runat ="server" Height ="330px" Width ="617px" TextMode ="MultiLine" ></ asp:TextBox >
< iframe id ="IframeTT" runat ="server" src ="xml/booktest.xml" height ="330px" width ="617px" frameborder ="1" style ="border-style: solid; border-width: 0px" ></ iframe >
</ div >
</ form >
</ body >
</ html >
.cs文件
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;
using System.Collections.Generic;
public partial class XmlTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void LinkButtonCreate_Click(object sender, EventArgs e)
{
string path = Server.MapPath("Xml/bookTest.xml");
XmlDocument Doc = new XmlDocument();
XmlDeclaration DecA = Doc.CreateXmlDeclaration("1.0", null, null); //默认为utf-8
Doc.AppendChild(DecA);
//创建一个根节点(一级)
XmlElement Root = Doc.CreateElement("Root");
Doc.AppendChild(Root);
//创建节点(二级) XmlNode不能直接带属性
XmlNode node2 = Doc.CreateElement("Book");
Root.AppendChild(node2);
//创建节点(二级)只带属性 ----注意XmlElement和XmlNode不同,XmlElement可以有属性
XmlElement Element = Doc.CreateElement("Book");
Element.SetAttribute("Id", "1");
Element.SetAttribute("Name", "test111");
Element.SetAttribute("PageCount", "111");
Root.AppendChild(Element);
//创建节点(二级)带属性和子节点 ----注意XmlElement和XmlNode不同,XmlElement可以有属性
XmlElement Element1 = Doc.CreateElement("Book");
Element1.SetAttribute("Id", "2");
Element1.SetAttribute("Name", "test222");
Element1.SetAttribute("PageCount", "222");
Root.AppendChild(Element1);
//创建节点(三级)只有值
XmlElement Element2 = Doc.CreateElement("price");
Element2.InnerText = "22.50";
Element1.AppendChild(Element2);
//创建节点(三级)只有值
Element2 = Doc.CreateElement("author");
Element2.InnerText = "张三";
Element1.AppendChild(Element2);
//创建节点(三级)只有值
Element2 = Doc.CreateElement("Content");
Element2.InnerText = "简介Test简介Test简介Test简介Test简介Test简介Test简介Test简介Test简介Test简介Test简介Test简介Test";
Element1.AppendChild(Element2);
Doc.Save(@path);
Label1.Text=DateTime.Now.ToString()+"创建XML文件:"+path+"成功!";
TextBox1.Text = System.IO.File.ReadAllText(@path);
}
protected void LinkButtonAdd_Click(object sender, EventArgs e)
{
string path;
path = Server.MapPath("xml/bookTest.xml");
XmlDocument Doc = new XmlDocument();
Doc.Load(@path);
XmlNode Root = Doc.SelectSingleNode("Root");
int NodeCount=Root.ChildNodes.Count;//结点个数
for (int i = NodeCount; i < 10 + NodeCount; i++)
{
//创建新节点(只有属性)
XmlElement Element1 = Doc.CreateElement("Book");
Element1.SetAttribute("Id", i.ToString());
Element1.SetAttribute("Name", "book"+i.ToString());
Element1.SetAttribute("PageCount", "100"+i.ToString());
//创建子节点(只有值)
XmlElement Element2 = Doc.CreateElement("price");
Element2.InnerText = "10" + i.ToString() + ".50";
Element1.AppendChild(Element2);
//创建子节点(只有值)
Element2 = Doc.CreateElement("author");
Element2.InnerText = "张三("+i.ToString()+")";
Element1.AppendChild(Element2);
//创建子节点(只有值)
Element2 = Doc.CreateElement("Content");
Element2.InnerText = "简介("+i.ToString()+")Test简介Test简介Test";
Element1.AppendChild(Element2);
Root.AppendChild(Element1);
}
Doc.Save(@path);//保存
Label1.Text = DateTime.Now.ToString() + "显示XML文件:" + path + "成功!";//提示
TextBox1.Text = System.IO.File.ReadAllText(@path);//输出到TextBox
}
protected void LinkButtonDel_Click(object sender, EventArgs e)
{
string path;
path = Server.MapPath("xml/bookTest.xml");
XmlDocument Doc = new XmlDocument();
Doc.Load(@path);
XmlNode Root = Doc.SelectSingleNode("Root");
Root.RemoveAll();
Doc.Save(@path);//保存
Label1.Text = DateTime.Now.ToString() + "清除XML文件:" + path + "成功!";//提示
TextBox1.Text = System.IO.File.ReadAllText(@path);//输出到TextBox
}
protected void LinkButtonShow_Click(object sender, EventArgs e)
{
string XmlContent,path;
path = Server.MapPath("xml/bookTest.xml");
XmlContent = System.IO.File.ReadAllText(@path);
TextBox1.Text = XmlContent;
Label1.Text = DateTime.Now.ToString() + "显示XML文件:" + path + "成功!";
IframeTT.ResolveUrl("xml/booktest.xml");
}
protected void LinkButtonAdd2_Click(object sender, EventArgs e)
{
string SearchAttribute = TextBoxAttribute.Text;
string SearchTextBoxChildNode = TextBoxChildNode.Text;
string AddAttributeName = TextBoxAttributeName.Text;
string AddAttributeValue = TextBoxAttributeValue.Text;
string path = Server.MapPath("xml/bookTest.xml");
string ShowStr = "";
if (SearchTextBoxChildNode!="")
{
SearchTextBoxChildNode = "/" + SearchTextBoxChildNode;
}
if (SearchAttribute == "" && AddAttributeName == "" )
{
Common.JScript.Alert("属性ID 与 添加属性名称 必填");
}
else
{
XmlDocument Doc = new XmlDocument();
Doc.Load(@path);
XmlElement Node =(XmlElement) Doc.SelectSingleNode("Root/Book[@Id='" + SearchAttribute + "']" + SearchTextBoxChildNode);
if (Node != null)
{
Node.SetAttribute(AddAttributeName, AddAttributeValue);
if (SearchTextBoxChildNode != "")
{
ShowStr = ShowStr + "\n-----结点:" + Node.Name;
ShowStr = ShowStr + "\n-----结点值:" + Node.InnerText;
foreach (XmlAttribute item in Node.Attributes)
{
ShowStr = ShowStr + "\n属性" + item.Name + "=" + item.Value;
}
}
else
{
ShowStr = ShowStr + "\n-----结点:" + Node.Name;
//添加属性
foreach (XmlAttribute item in Node.Attributes)
{
ShowStr = ShowStr + "\n属性" + item.Name + "=" + item.Value;
}
foreach (XmlElement item in Node.ChildNodes)
{
ShowStr = ShowStr + "\n子结点:" + item.Name + "=" + item.InnerText;
}
}
}
else
{
ShowStr = "没有找到!";
}
Doc.Save(@path);//保存
Label1.Text = DateTime.Now.ToString() + "查找结点:" + path + "成功!";//提示
TextBox1.Text = ShowStr;//输出到TextBox
}
}
protected void LinkButtonDelAttribute_Click(object sender, EventArgs e)
{
string SearchAttribute = TextBoxAttribute.Text;
string SearchTextBoxChildNode = TextBoxChildNode.Text;
string AddAttributeName = TextBoxAttributeName.Text;
string AddAttributeValue = TextBoxAttributeValue.Text;
string path = Server.MapPath("xml/bookTest.xml");
string ShowStr = "";
if (SearchTextBoxChildNode != "")
{
SearchTextBoxChildNode = "/" + SearchTextBoxChildNode;
}
if (SearchAttribute == "" && AddAttributeName == "")
{
Common.JScript.Alert("属性ID 与 添加属性名称 必填");
}
else
{
XmlDocument Doc = new XmlDocument();
Doc.Load(@path);
XmlElement Node = (XmlElement)Doc.SelectSingleNode("Root/Book[@Id='" + SearchAttribute + "']" + SearchTextBoxChildNode);
if (Node != null)
{
//删除结点属性
Node.RemoveAttribute(AddAttributeName);
if (SearchTextBoxChildNode != "")
{
ShowStr = ShowStr + "\n-----结点:" + Node.Name;
ShowStr = ShowStr + "\n-----结点值:" + Node.InnerText;
foreach (XmlAttribute item in Node.Attributes)
{
ShowStr = ShowStr + "\n属性" + item.Name + "=" + item.Value;
}
}
else
{
ShowStr = ShowStr + "\n-----结点:" + Node.Name;
//添加属性
foreach (XmlAttribute item in Node.Attributes)
{
ShowStr = ShowStr + "\n属性" + item.Name + "=" + item.Value;
}
foreach (XmlElement item in Node.ChildNodes)
{
ShowStr = ShowStr + "\n子结点:" + item.Name + "=" + item.InnerText;
}
}
}
else
{
ShowStr = "没有找到!";
}
Doc.Save(@path);//保存
Label1.Text = DateTime.Now.ToString() + "删除结点属性:" + path + "成功!";//提示
TextBox1.Text = ShowStr;//输出到TextBox
}
}
/// <summary>
/// 查找
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void LinkButtonSearch_Click(object sender, EventArgs e)
{
string SearchNode=TextBoxNode.Text;
string SearchAttribute = TextBoxAttribute.Text;
string SearchTextBoxChildNode = TextBoxChildNode.Text;
string path = Server.MapPath("xml/bookTest.xml");
string ShowStr = "";
if (SearchTextBoxChildNode!="")
{
SearchTextBoxChildNode = "/" + SearchTextBoxChildNode;
}
if (SearchAttribute == "")
{
Common.JScript.Alert("属性ID必填");
}
else {
XmlDocument Doc = new XmlDocument();
Doc.Load(@path);
XmlNode Node = Doc.SelectSingleNode("Root/Book[@Id='" + SearchAttribute + "']" + SearchTextBoxChildNode);
if (Node != null)
{
if (SearchTextBoxChildNode != "")
{
ShowStr = ShowStr + "\n-----结点:" + Node.Name;
ShowStr = ShowStr + "\n-----结点值:" + Node.InnerText;
foreach (XmlAttribute item in Node.Attributes)
{
ShowStr = ShowStr + "\n属性" + item.Name + "=" + item.Value;
}
}else{
ShowStr = ShowStr + "\n-----结点:" + Node.Name;
foreach (XmlAttribute item in Node.Attributes)
{
ShowStr = ShowStr + "\n属性" + item.Name + "=" + item.Value;
}
foreach (XmlElement item in Node.ChildNodes)
{
ShowStr = ShowStr + "\n子结点:" + item.Name + "=" + item.InnerText;
}
}
}
else {
ShowStr = "没有找到!";
}
Doc.Save(@path);//保存
Label1.Text = DateTime.Now.ToString() + "查找结点:" + path + "成功!";//提示
TextBox1.Text = ShowStr;//输出到TextBox
}
}
protected void LinkButtonSearchNode_Click(object sender, EventArgs e)
{
string SearchNode=TextBoxNode.Text;
string SearchNodeValue = TextBoxNodeValue.Text;
string SearchEditNodeValue = TextBoxEditNodeValue.Text;
string path = Server.MapPath("xml/bookTest.xml");
string ShowStr = "";
string ShowStr2 = "";
XmlDocument Doc = new XmlDocument();
Doc.Load(@path);
if (SearchNode == "")
{
Common.JScript.Alert("经查找的结点必须输入!");
}
else
{
XmlNodeList NodeList = Doc.GetElementsByTagName(SearchNode);
if (NodeList != null)
{
foreach (XmlNode item in NodeList)
{
if (!(SearchNodeValue.Equals("")))
{
if (SearchNodeValue.Equals(item.InnerText))
{
ShowStr = ShowStr + "\n结点值:" + item.InnerText;
//修改结点值
if (!(SearchEditNodeValue.Equals(""))) { item.InnerText = SearchEditNodeValue; }
ShowStr = ShowStr + "----父结点<" + item.ParentNode.Name;
foreach (XmlAttribute itemAttrib in item.ParentNode.Attributes)
{
ShowStr = ShowStr + " " + itemAttrib.Name + "=\"" + itemAttrib.Value + "\"";
}
ShowStr = ShowStr + " />";
}
else
{
ShowStr2 = " 没找到这个结点!";
}
}
else if (SearchNodeValue.Equals("") && SearchEditNodeValue.Equals(""))
{
ShowStr = ShowStr + "\n结点值:" + item.InnerText;
//修改结点值
if (!(SearchEditNodeValue.Equals(""))) { item.InnerText = SearchEditNodeValue; }
ShowStr = ShowStr + "----父结点<" + item.ParentNode.Name;
foreach (XmlAttribute itemAttrib in item.ParentNode.Attributes)
{
ShowStr = ShowStr + " " + itemAttrib.Name + "=\"" + itemAttrib.Value + "\"";
}
ShowStr = ShowStr + " />";
}
else
{
ShowStr2 = " 没找到这个结点!";
}
}
}
}
Doc.Save(@path);//保存
Label1.Text = DateTime.Now.ToString() + "查找结点:" + path + "成功!";//提示
if (ShowStr.Equals(""))
{
TextBox1.Text = ShowStr2;//输出到TextBox
}
else
{
TextBox1.Text = ShowStr;//输出到TextBox
}
}
protected void LinkButtonDelNode_Click(object sender, EventArgs e)
{
string SearchNode = TextBoxNode.Text;
string SearchNodeValue = TextBoxNodeValue.Text;
string SearchEditNodeValue = TextBoxEditNodeValue.Text;
string path = Server.MapPath("xml/bookTest.xml");
string ShowStr = "";
string ShowStr2 = "";
XmlDocument Doc = new XmlDocument();
Doc.Load(@path);
if (SearchNode == "")
{
Common.JScript.Alert("经查找的结点必须输入!");
}
else
{
XmlNodeList NodeList = Doc.GetElementsByTagName(SearchNode);
XmlNode DelNodel=null;
List<XmlNode> ParentNode=new List<XmlNode>();
if (NodeList != null)
{
foreach (XmlNode item in NodeList)
{
if (SearchNodeValue != "" && item.InnerText == SearchNodeValue)
{
//得到删除结点
DelNodel = item;
}
else if (SearchNodeValue.Equals(""))
{
//删除结点
//item.ParentNode.RemoveChild(item);
ParentNode.Add(item.ParentNode);
}
else
{
ShowStr2 = "\n 没找到这个结点2!" ;
}
ShowStr = ShowStr +"\n"+ item.InnerText;
//Response.Write("[" + SearchNodeValue + "][" + item.InnerText + "]");
//if (item.InnerText == SearchNodeValue) { Common.JScript.Alert("LL"); }
}
if (DelNodel != null) { DelNodel.ParentNode.RemoveChild(DelNodel); }
if (ParentNode != null) {
foreach (XmlNode item in ParentNode)
{
item.RemoveChild( item.SelectSingleNode(SearchNode));
}
}
}
}
Doc.Save(@path);//保存
Label1.Text = DateTime.Now.ToString() + "查找结点:" + path + "成功!" + ShowStr2;//提示
TextBox1.Text = System.IO.File.ReadAllText(@path);//输出到TextBox
}
}