• asp.net 实现对xml文件的 读取,添加,删除,修改


    用于修改站内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);
        }
    }

    当修改的是文件不在该站点下时 应该使用绝对路径..

    原文:http://www.cnblogs.com/RevengeBoy/archive/2007/06/20/790235.aspx

  • 相关阅读:
    ceph pg pool
    linux 开放访问端口
    授予普通用户root权限
    ajax返回json中文是问号
    elasticseach 安装head
    python学习之路8
    JS正则表达式学习
    python学习之路7 前端学习4 jQuery 学习
    python学习之路7 前端学习3
    python 学习总结6 前端学习2
  • 原文地址:https://www.cnblogs.com/Tmc-Blog/p/3296305.html
Copyright © 2020-2023  润新知