using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
public partial class CreateXml : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
/// <summary>
/// 创建Xml
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnCreate_Click(object sender, EventArgs e)
{
XmlDataDocument XmlDoc = new XmlDataDocument();
//创建Xml文档的说明信息
XmlDeclaration XmlDec= XmlDoc.CreateXmlDeclaration("1.0", "gb2312", null);// 版本 编码 独立?
XmlDoc.AppendChild(XmlDec);
//创建根节点
XmlElement XmlEle = XmlDoc.CreateElement("Book");
XmlDoc.AppendChild(XmlEle);
//创建新节点
XmlElement BookOne = XmlDoc.CreateElement("BookOne");
//创建新节点的子节点
XmlElement BookName = XmlDoc.CreateElement("BookName");
//子节点的值
BookName.InnerText = "《like one》";
//创建新节点的子节点
XmlElement BookPrice = XmlDoc.CreateElement("BookPrice");
//子节点的值
BookPrice.InnerText = "10.00$";
//将子节点附加给新节点
BookOne.AppendChild(BookName);
BookOne.AppendChild(BookPrice);
XmlEle.AppendChild(BookOne);
//将新节点附加个根节点
XmlDoc.AppendChild(XmlEle);
XmlElement BookOne2 = XmlDoc.CreateElement("BookOne");
XmlElement BookName2 = XmlDoc.CreateElement("BookName");
BookName2.InnerText = "《like two》";
XmlElement BookPrice2 = XmlDoc.CreateElement("BookPrice");
BookPrice2.InnerText = "10.00$";
BookOne2.AppendChild(BookName2);
BookOne2.AppendChild(BookPrice2);
XmlEle.AppendChild(BookOne2);
XmlDoc.AppendChild(XmlEle);
XmlElement BookOne3 = XmlDoc.CreateElement("BookOne");
//给BookOne3 设置属性
BookOne3.SetAttribute("Attribute1","111");
BookOne3.SetAttribute("Attribute2", "222");
XmlElement BookName3 = XmlDoc.CreateElement("BookName");
BookName3.InnerText = "《like three》";
XmlElement BookPrice3 = XmlDoc.CreateElement("BookPrice");
BookPrice3.InnerText = "10.00$";
BookOne3.AppendChild(BookName3);
BookOne3.AppendChild(BookPrice3);
XmlEle.AppendChild(BookOne3);
XmlDoc.AppendChild(XmlEle);
XmlDoc.Save(Server.MapPath("~/")+"Test.xml");
}
/// <summary>
/// 获取XML文档节点的值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnFirst_Click(object sender, EventArgs e)
{
XmlDocument Xmldoc = new XmlDocument();
Xmldoc.Load(Server.MapPath("~/Test.xml"));
//首节点的值
XmlNode Node= Xmldoc.DocumentElement.FirstChild;
if (Node != null)
{
string str = "";
str += "This is " + Node.Name + " and childname is " + Node["BookName"].Name+Node["BookName"].InnerText + "<br/>";
str += Node["BookPrice"].Name + " is " + Node["BookPrice"].InnerText + "<br/><br/><br/><br/>";
Response.Write(str);
}
//末节点的值
Node = Xmldoc.DocumentElement.LastChild;
if (Node != null)
{
string str = "";
str += "This is " + Node.Name + " and childname is " + Node["BookName"].Name + Node["BookName"].InnerText + "<br/>";// Node["BookName"].Name 就是BookName Node["BookName"]即节点名字为BookName
str += Node["BookPrice"].Name + " is " + Node["BookPrice"].InnerText + "<br/><br/><br/><br/>";
Response.Write(str);
}
}
/// <summary>
/// 查看某一节点的值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSome_Click(object sender, EventArgs e)
{
XmlDocument Xmldoc = new XmlDocument();
Xmldoc.Load(Server.MapPath("~/Test.xml"));
//获取XML文档的节点列表
XmlNodeList NodeList=Xmldoc.DocumentElement.ChildNodes;
//节点列表的首个节点 索引以0开始
XmlNode Node = NodeList.Item(0);
if (Node != null)
{
string str = "";
str += "This is " + Node.Name + " and childname is " + Node["BookName"].Name + Node["BookName"].InnerText + "<br/>";
str += Node["BookPrice"].Name + " is " + Node["BookPrice"].InnerText + "<br/><br/><br/><br/>";
Response.Write(str);
}
}
/// <summary>
/// Xml节点定位插入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnInsert_Click(object sender, EventArgs e)
{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(Server.MapPath("~/Test.xml"));
//寻找根节点
XmlNode xmlnode = XmlDoc.SelectSingleNode("/Book");
XmlElement BookOne = XmlDoc.CreateElement("BookOne");
XmlElement BookName = XmlDoc.CreateElement("BookName");
BookName.InnerText = "《like inert》";
XmlElement BookPrice = XmlDoc.CreateElement("BookPrice");
BookPrice.InnerText = "10.00$";
BookOne.AppendChild(BookName);
BookOne.AppendChild(BookPrice);
//将新节点附加给根节点 使用XmlDoc.AppendChild 需将新节点先附加给根节点 再将根节点附加给文档 新节点也可以用XmlDoc.DocumentElement.AppendChild 直接附加给文档
//xmlnode.AppendChild(BookOne);
//XmlDoc.AppendChild(xmlnode);
//在末尾添加子节点
//XmlDoc.DocumentElement.AppendChild(BookOne);
//在指定位置添加节点 InsertBefore
//XmlDoc.DocumentElement.InsertBefore(BookOne,XmlDoc.DocumentElement.ChildNodes.Item(0));
//在指定位置添加节点 InsertBefore
XmlDoc.DocumentElement.InsertAfter(BookOne, XmlDoc.DocumentElement.ChildNodes.Item(0));
XmlDoc.Save(Server.MapPath("~/") + "Test.xml");
}
/// <summary>
/// 删除节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDelete_Click(object sender, EventArgs e)
{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(Server.MapPath("~/Test.xml"));
//寻找根节点
XmlNode xmlnode = XmlDoc.SelectSingleNode("/Book");
//删除根节点的第一个子节点
//XmlNode Node = xmlnode.FirstChild;
//if (Node != null)
//{
// Node.ParentNode.RemoveChild(Node);
//}
//根据条件循环删除节点
XmlNodeList NodeList = XmlDoc.DocumentElement.ChildNodes;
for (int i = 0; i < NodeList.Count; i++)
{
if (NodeList[i].FirstChild.InnerText == "《like inert》")
{
NodeList[i].ParentNode.RemoveChild(NodeList[i]);
}
}
XmlDoc.Save(Server.MapPath("~/") + "Test.xml");
}
/// <summary>
/// 编辑节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnEdit_Click(object sender, EventArgs e)
{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(Server.MapPath("~/Test.xml"));
//寻找根节点
XmlNode xmlnode = XmlDoc.SelectSingleNode("/Book");
//编辑根节点的第一个子节点
XmlNode Node = xmlnode.FirstChild;
if (Node != null)
{
Node.FirstChild.InnerText = "i am edited " + Node.FirstChild.InnerText;
//指定第几个子节点
Node.ChildNodes[1].InnerText = "i am edited " + Node.ChildNodes[1].InnerText;
//Node.FirstChild.InnerText = Node.FirstChild.InnerText.Replace("i am edited ", "");
//Node.ChildNodes[1].InnerText = Node.ChildNodes[1].InnerText.Replace("i am edited ", "");
}
//根据条件循环编辑节点
XmlNodeList NodeList = XmlDoc.DocumentElement.ChildNodes;
for (int i = 0; i < NodeList.Count; i++)
{
//根据条件修改
//if (NodeList[i].FirstChild.InnerText == "《like inert》")
//{
// NodeList[i].FirstChild.InnerText = "i am edited " + NodeList[i].FirstChild.InnerText;
//}
//NodeList[i].FirstChild.InnerText = "i am edited " + NodeList[i].FirstChild.InnerText;
//循环修改信息
NodeList[i].ChildNodes[0].InnerText = "i am edited " + NodeList[i].ChildNodes[0].InnerText;
NodeList[i].ChildNodes[1].InnerText = "i am edited " + NodeList[i].ChildNodes[1].InnerText;
}
XmlDoc.Save(Server.MapPath("~/") + "Test.xml");
}
/// <summary>
/// 查找
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSearch_Click(object sender, EventArgs e)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("~/Test.xml"));
XmlNodeList nodelist = xmlDoc.SelectNodes("Book/BookOne[BookName='" + this.tbSearch.Text.Trim() + "']");
for (int i = 0; i < nodelist.Count; i++)
{
string str = "";
str += nodelist[i].InnerText;
Response.Write(str);
}
//Response.Write(nodelist.Count);
}
/// <summary>
/// 模糊查找
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("~/Test.xml"));
//xmlDoc.SelectNodes 搜索多个节点 xmlDoc.SelectSingleNode 搜索根节点
XmlNodeList nodelist = xmlDoc.SelectNodes("Book/BookOne[contains(BookName,'" + this.tbSearch2.Text.Trim() + "')]");
//for (int i = 0; i < nodelist.Count; i++)
//{
// string str = "";
// str += nodelist[i].InnerText;
// Response.Write(str);
//}
Response.Write(nodelist.Count);
}
/// <summary>
/// 获取节点属性信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAttra_Click(object sender, EventArgs e)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("~/Test.xml"));
//文档节点列
XmlNodeList nodelist = xmlDoc.DocumentElement.ChildNodes;
for (int i = 0; i < nodelist.Count; i++)
{
//其中一个节点的属性集合
XmlAttributeCollection xmlattr=nodelist[i].Attributes;
foreach(XmlAttribute xmla in xmlattr)
{
//判断该节点的属性名字和值
if (xmla.Name == "Attribute1"&&xmla.Value=="111")
{
Response.Write(nodelist[i].ChildNodes[0].InnerText);
}
if (xmla.Name == "Attribute2" && xmla.Value == "222")
{
Response.Write(nodelist[i].ChildNodes[1].InnerText);
}
}
}
}
}
<div>
<asp:Button ID="btnCreate" runat="server" Text="创建XML"
onclick="btnCreate_Click" />
<asp:Button ID="btnFirst" runat="server" Text="查找Xml首节点值"
onclick="btnFirst_Click" />
<br />
<asp:Button ID="btnSome" runat="server" Text="查看某一节点的值"
onclick="btnSome_Click" />
<br />
<br />
<asp:Button ID="btnInsert" runat="server" Text="Xml节点定位插入"
onclick="btnInsert_Click" />
<asp:Button ID="btnDelete" runat="server" Text="删除某个节点"
onclick="btnDelete_Click" />
<br />
<br />
<asp:Button ID="btnEdit" runat="server" Text="编辑节点" onclick="btnEdit_Click" />
<br />
<br />
<asp:Button ID="btnAttra" runat="server" onclick="btnAttra_Click" Text="获取属性" />
<br />
<br />
<asp:Button ID="btnSearch" runat="server" onclick="btnSearch_Click" Text="查找" />
<br />
<br />
<asp:TextBox ID="tbSearch" runat="server"></asp:TextBox>
<br />
<br />
<asp:Button ID="btnSearchs" runat="server" onclick="Button1_Click" Text="模糊查询" />
<br />
<br />
<asp:TextBox ID="tbSearch2" runat="server"></asp:TextBox>
</div>
Test.XML
<?xml version="1.0" encoding="gb2312"?>
<Book>
<BookOne>
<BookName>《like one》</BookName>
<BookPrice>10.00$</BookPrice>
</BookOne>
<BookOne>
<BookName>《like two》</BookName>
<BookPrice>10.00$</BookPrice>
</BookOne>
<BookOne Attribute1="111" Attribute2="222">
<BookName>《like three》</BookName>
<BookPrice>10.00$</BookPrice>
</BookOne>
</Book>