asp.net 实现对xml文件的 读取,添加,删除,修改
2014-03-25 13:50
399 查看
用于修改站内xml文件 已知有一个XML文件(bookstore.xml)如下: <?xml version="1.0" encoding="gb2312"?> <bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> </bookstore> 1、往<bookstore>节点中插入一个<book>节点: XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load("bookstore.xml"); XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore> XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点 xe1.SetAttribute("genre","RevengeBoy");//设置该节点genre属性 xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性 XmlElement xesub1=xmlDoc.CreateElement("title"); xesub1.InnerText="CS从入门到精通";//设置文本节点 xe1.AppendChild(xesub1);//添加到<book>节点中 XmlElement xesub2=xmlDoc.CreateElement("author"); xesub2.InnerText="候捷"; xe1.AppendChild(xesub2); XmlElement xesub3=xmlDoc.CreateElement("price"); xesub3.InnerText="58.3"; xe1.AppendChild(xesub3); root.AppendChild(xe1);//添加到<bookstore>节点中 xmlDoc.Save("bookstore.xml"); //================ 结果为: <?xml version="1.0" encoding="gb2312"?> <bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> <book genre="RevengeBoy" ISBN="2-3631-4"> <title>CS从入门到精通</title> <author>候捷</author> <price>58.3</price> </book> </bookstore> 2、修改节点:将genre属性值为“RevengeBoy“的节点的genre值改为“updateRevengeBoy”,将该节点的子节点<author>的文本修改为“亚胜”。 XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点 foreach(XmlNode xn in nodeList)//遍历所有子节点 { XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型 if(xe.GetAttribute("genre")=="RevengeBoy")//如果genre属性值为“RevengeBoy” { xe.SetAttribute("genre","updateRevengeBoy");//则修改该属性为“updateRevengeBoy” XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点 foreach(XmlNode xn1 in nls)//遍历 { XmlElement xe2=(XmlElement)xn1;//转换类型 if(xe2.Name=="author")//如果找到 { xe2.InnerText="亚胜";//则修改 break;//找到退出来就可以了 } } break; } } xmlDoc.Save("bookstore.xml");//保存。 //================= 最后结果为: <?xml version="1.0" encoding="gb2312"?> <bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> <book genre="updateRevengeBoy" ISBN="2-3631-4"> <title>CS从入门到精通</title> <author>亚胜</author> <price>58.3</price> </book> </bookstore> 3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="updateRevengeBoy" ISBN="2-3631-4">节点。 XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes; foreach(XmlNode xn in xnl) { XmlElement xe=(XmlElement)xn; if(xe.GetAttribute("genre")=="fantasy") { xe.RemoveAttribute("genre");//删除genre属性 } else if(xe.GetAttribute("genre")=="updateRevengeBoy") { xe.RemoveAll();//删除该节点的全部内容 } } xmlDoc.Save("bookstore.xml"); //==================== 最后结果为: <?xml version="1.0" encoding="gb2312"?> <bookstore> <book ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> <book> </book> </bookstore> 4、显示所有数据。 XmlNode xn=xmlDoc.SelectSingleNode("bookstore"); XmlNodeList xnl=xn.ChildNodes; foreach(XmlNode xnf in xnl) { XmlElement xe=(XmlElement)xnf; Console.WriteLine(xe.GetAttribute("genre"));//显示属性值 Console.WriteLine(xe.GetAttribute("ISBN")); XmlNodeList xnf1=xe.ChildNodes; foreach(XmlNode xn2 in xnf1) { Console.WriteLine(xn2.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; using System.Xml.XPath; using System.Runtime.InteropServices; public partial class _Default : System.Web.UI.Page { DataTable dtList ; DataRow dr; [DllImport("kernel32.dll")] static extern bool SetFileAttributes(string lpFileName, uint dwFileAttributes); public DataTable MakeTable(string tbName) { // Create a DataTable. DataTable table = new DataTable(tbName); // Create a DataColumn and set various properties. DataColumn column = new DataColumn(); column.DataType = System.Type.GetType("System.String"); column.AllowDBNull = false; column.Caption = "ProductId"; column.ColumnName = "ProductId"; // Add the column to the table. table.Columns.Add(column); DataColumn column1 = new DataColumn(); column1.DataType = System.Type.GetType("System.String"); column1.Caption = "Title"; column1.ColumnName = "Title"; // Add the column to the table. table.Columns.Add(column1); DataColumn column2 = new DataColumn(); column2.DataType = System.Type.GetType("System.String"); column2.Caption = "TagLine"; column2.ColumnName = "TagLine"; // Add the column to the table. table.Columns.Add(column2); DataColumn column3 = new DataColumn(); column3.DataType = System.Type.GetType("System.String"); column3.Caption = "Image"; column3.ColumnName = "Image"; // Add the column to the table. table.Columns.Add(column3); DataColumn column4 = new DataColumn(); column4.DataType = System.Type.GetType("System.String"); column4.Caption = "ProductInfo"; column4.ColumnName = "ProductInfo"; // Add the column to the table. table.Columns.Add(column4); return table; } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { this.ProductId.Visible = false; this.ProductIdTB.Visible = false; Bind(); this.DropDownList1.DataSource = dtList; this.DropDownList1.Items.Clear(); this.DropDownList1.DataTextField = "Title"; this.DropDownList1.DataValueField = "ProductId"; this.DropDownList1.DataBind(); } } private void Bind() { dtList = MakeTable("Product"); XPathDocument doc = new XPathDocument(Server.MapPath("Helpme.xml")); XPathNavigator navigator = doc.CreateNavigator(); foreach (XPathNavigator nav in navigator.Select("/Products/Product")) { do { //Find the first element. if (nav.NodeType == XPathNodeType.Element) { //Determine whether children exist. if (nav.HasChildren == true) { dr = dtList.NewRow(); //Move to the first child. nav.MoveToFirstChild(); //Loop through all the children. do { if (nav.Name == "ProductId") dr["ProductId"] = nav.Value; if (nav.Name == "Title") dr["Title"] = nav.Value; if (nav.Name == "TagLine") dr["TagLine"] = nav.Value; if (nav.Name == "Image") dr["Image"] = nav.Value; if (nav.Name == "ProductInfo") dr["ProductInfo"] = nav.Value; } while (nav.MoveToNext()); dtList.Rows.Add(dr); } } } while (nav.MoveToNext()); } } protected void Button1_Click(object sender, EventArgs e) { string rootFolder = Server.MapPath("Helpme.xml"); XmlDocument doc = new XmlDocument(); doc.Load(rootFolder); XPathNavigator navigator = doc.CreateNavigator(); foreach (XPathNavigator nav in navigator.Select("/Products/Product")) { do { //Determine whether children exist. if (nav.HasChildren == true) { nav.MoveToFirstChild(); //Loop through all the children. do { if (nav.Name == "ProductId") { if(nav.Value== this.DropDownList1.SelectedValue.Trim()) { do { if (nav.Name == "Title") nav.SetValue(this.titleTB.Text); if (nav.Name == "TagLine") nav.SetValue(this.TagLineTB.Text); if (nav.Name == "Image") nav.SetValue(this.ImageTB.Text); if (nav.Name == "ProductInfo") nav.SetValue(this.ProductInfoTB.Text); } while (nav.MoveToNext()); } } } while (nav.MoveToNext()); } } while (nav.MoveToNext()); } SetFileAttributes(rootFolder, (uint)0);//修改文件属性,去掉所有属性! SetFileAttributes(rootFolder, (uint)128); // FILE_ATTRIBUTE_NORMAL doc.Save(rootFolder); } protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { this.TextBox1.Text = this.DropDownList1.SelectedValue.Trim(); Bind(); DataView dv = dtList.DefaultView; dv.RowFilter = "ProductId = '" + this.DropDownList1.SelectedValue.Trim() + "'"; this.titleTB.Text = dv[0].Row["Title"].ToString(); this.TagLineTB.Text = dv[0].Row["TagLine"].ToString(); this.ImageTB.Text = dv[0].Row["Image"].ToString(); this.ProductInfoTB.Text = dv[0].Row["ProductInfo"].ToString(); } protected void BtnIns_Click(object sender, EventArgs e) { this.ProductId.Visible = true; this.ProductIdTB.Visible = true; string rootFolder =Server.MapPath( "Helpme.xml"); string pid = this.ProductIdTB.Text; string tit = this.titleTB.Text; string tag = this.TagLineTB.Text; string Img = this.ImageTB.Text; string pinfo = this.ProductInfoTB.Text; if(pid != string.Empty&&tit != string.Empty&&tag !=string.Empty&&Img != string.Empty&&pinfo != string.Empty) { XmlDocument doc = new XmlDocument(); doc.Load(rootFolder); XmlNode root = doc.DocumentElement; XmlNode pr = doc.CreateElement("Product"); //Create new nodes. XmlNode elem = doc.CreateElement("ProductId"); elem.InnerText = pid; XmlNode title = doc.CreateElement("Title"); title.InnerText = tit; XmlNode tl = doc.CreateElement("TagLine"); tl.InnerText = tag; XmlNode ima = doc.CreateElement("Image"); ima.InnerText = Img; XmlNode prin = doc.CreateElement("ProductInfo"); prin.InnerText = pinfo; //Add the node to the document. pr.InsertAfter(prin, pr.NextSibling); pr.InsertAfter(ima, pr.NextSibling); pr.InsertAfter(tl, pr.NextSibling); pr.InsertAfter(title, pr.NextSibling); pr.InsertBefore(elem, pr.FirstChild); root.InsertBefore(pr, root.FirstChild); SetFileAttributes(rootFolder, (uint)0);//修改文件属性,去掉所有属性! SetFileAttributes(rootFolder, (uint)128); // FILE_ATTRIBUTE_NORMAL doc.Save(rootFolder); } } protected void DelBtn_Click(object sender, EventArgs e) { string rootFolder =Server.MapPath( "Helpme.xml"); XmlDocument doc = new XmlDocument(); doc.Load(rootFolder); XPathNavigator navigator = doc.CreateNavigator(); foreach (XPathNavigator nav in navigator.Select("/Products/Product")) { do { //Determine whether children exist. if (nav.HasChildren == true) { nav.MoveToFirstChild(); //Loop through all the children. do { if (nav.Name == "ProductId") { if (nav.Value == this.DropDownList1.SelectedValue.Trim()) { nav.MoveToParent(); if (nav.Name == "Product") nav.DeleteSelf(); } } } while (nav.MoveToNext()); } else { nav.MoveToParent(); if (nav.Name == "Product") nav.DeleteSelf(); } } while (nav.MoveToNext()); } SetFileAttributes(rootFolder, (uint)0);//修改文件属性,去掉所有属性! SetFileAttributes(rootFolder, (uint)128); // FILE_ATTRIBUTE_NORMAL doc.Save(rootFolder); } } 当修改的是文件不在该站点下时 应该使用绝对路径..
相关文章推荐
- Asp.net MVC 视图引擎集合
- 在asp.net web form 中使用ajax
- ASP.NET MVC Web API 学习笔记---联系人增删改查
- ASP.NET MVC 5 - 给数据模型添加校验器
- [转]支付宝接口程序、文档及解读(ASP.NET)
- 在asp.net web form项目中使用json
- ASP 连接 MSSQL 数据库
- 2014年3月份第3周51Aspx源码发布详情
- asp.net读取word文档
- ASP.NET 使用AJAX让GridView的数据行显示提示框(ToolTip)
- asp.net中的ashx文件有什么用?
- ASP.NET页面刷新与全局变量
- ASP.NET中的SQL注入攻击与防护
- asp.net动态输出透明gif图片
- asp.NET 安全检查
- Win7、win2008中让IIS7支持asp的方法
- 关于在ASP.NET中以DCOM方式操作Excel的几个问题
- ASP.NET MVC验证码演示
- asp.net webform中的相对地址和绝对地址
- Asp.Net页面生命周期