zoukankan      html  css  js  c++  java
  • c#操作xml练习.

    .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- 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
        }
    }
    


    欢迎加入JAVA技术交流QQ群:179945282

    欢迎加入ASP.NET(C#)交流QQ群:17534377


  • 相关阅读:
    MVCCache2.应用程序缓存(Cache:1.输出缓存[2].应用程序缓存)
    接口和抽象类的区别和作用(功能、用途、好处)
    MVCCache1.输出缓存(Cache:[1].输出缓存2.应用程序缓存)
    JAVA中为什么要使用接口,继承接口不是还要重写方法吗?为什么不直接写那些方法呢?:::接口的最主要的作用是达到统一访问
    枚举的意义,用途,作用,用法,作用场景
    C++ compile multiple cpp and header files via I. cpp1.cpp cpp2.cpp o
    C++retrieve array via returned pointer,traverse the array pointer without the array size
    C++ pass array as pointer and sort in bubble
    C write and read file via FILE and open method in a+ or r mode
    C++ connection mysql and retrieve select sql result
  • 原文地址:https://www.cnblogs.com/q149072205/p/2095584.html
Copyright © 2011-2022 走看看