none
结合XML实现treeview的增删改。比较急! RRS feed

  • 问题

  • winfrom程序:单击treeview上的一个节点,有一个textbox实现数据的添加、修改,我现在已经实现了treeview控件上的增删改,但是还没有同步到XML里。

    也就是说,只是在treeview改变了结构,但是还没有实现写进XML。请问大家应该如何操作。谢谢!

    2012年2月8日 4:01

答案

  • 谢谢您的回答,由treeview生成XML,在我这边比较麻烦呢,因为XML的结构不只一个属性节点,有多个属性节点,但是我绑定到treeview上的只有2个属性节点。

    如果由treeview生成XML文档的话,只能生成2个属性节点,这并不是我想要的。

    附:

    <root Index="0" value="中国" name="00" Country="China">
      <province Index="1" value="01" name="四川省" Volume="1" Frequency="91.8">
        <City Index="20" value="02" name="资中县" Volume="1" Frequency="91.8">
          <Piecearea Index="300" value="101" name="罗泉镇" Volume="1" Frequency="91.8">
            <Town Index="4000" value="001" name="新丰村" Volume="0" Frequency="93.8">
              <Equipmentn Index="50000" value="020" name="1号设备" Volume="1" Frequency="91.8" />
              <Equipmentn Index="50001" value="002" name="2号设备" Volume="1" Frequency="91.8" />
              <Equipmentn Index="50002" value="003" name="3号设备" Volume="1" Frequency="91.8" />
            </Town>
            <Town Index="4001" value="002" name="星火村" Volume="2" Frequency="94.8">
              <Equipmentn value="001" name="1号设备" Volume="1" Frequency="91.8" />
              <Equipmentn value="006" name="2号设备" Volume="1" Frequency="91.8" />
            </Town>
          </Piecearea>
          <Piecearea Index="301" value="102" name="银山镇" Volume="1" Frequency="91.8">
            <Town value="001" name="杨村" Volume="2" Frequency="94.8">
              <Equipmentn value="001" name="1号设备" />
              <Equipmentn value="010" name="1号设备" />
            </Town>

    这只是XML文档的一部分!我绑定treeview上的只有value和name属性节点。

    统一绑定若干个属性到TreeView节点,然后输出到xml。

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年2月11日 4:17
    版主
  • <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>


    <!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></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="自动生成xml文件" 
                onclick="Button1_Click" Width="146px" />
            <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="第二种方法生成" 
                Width="191px" />
            <asp:Button ID="Button3" runat="server" onclick="Button3_Click" Text="添加一个节点" 
                Width="126px" />
            <asp:Button ID="Button4" runat="server" onclick="Button4_Click" Text="修改节点值" 
                Width="136px" />
            <asp:Button ID="Button5" runat="server" onclick="Button5_Click" Text="修改节点" 
                Width="142px" />
            <br />
            <asp:Button ID="Button6" runat="server" onclick="Button6_Click" 
                Text="删除结点中的某一个属性" Width="148px" />
            <asp:Button ID="Button7" runat="server" onclick="Button7_Click" 
                style="margin-left: 0px" Text="删除结点" Width="195px" />
            <asp:Button ID="Button8" runat="server" onclick="Button8_Click" 
                style="height: 21px" Text="Button" Width="121px" />
            <asp:Xml ID="Xml1" runat="server"></asp:Xml>
        </div>
        </form>
    </body>
    </html>
    -------------------------------------------------------------

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;


    using System.Xml;
    using System.Text;
    public partial class _Default : System.Web.UI.Page
    {
        XmlDocument xmldoc;
        XmlNode xmlnode;
        XmlElement xmlelem;
        protected void Page_Load(object sender, EventArgs e)
        {


        }


        /// <summary>
        /// 第一种生成xml文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click(object sender, EventArgs e)
        {
            //方法一:
            xmldoc = new XmlDocument();
            //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
            XmlDeclaration xmldecl;
            xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null);
            xmldoc.AppendChild(xmldecl);


            //加入一个根元素
            xmlelem = xmldoc.CreateElement("", "Employees", "");
            xmldoc.AppendChild(xmlelem);
            //加入另外一个元素
            for (int i = 1; i < 3; i++)
            {


                XmlNode root = xmldoc.SelectSingleNode("Employees");//查找<Employees> 
                XmlElement xe1 = xmldoc.CreateElement("Node");//创建一个<Node>节点 
                xe1.SetAttribute("genre", "李赞红");//设置该节点genre属性 
                xe1.SetAttribute("ISBN", "2-3631-4");//设置该节点ISBN属性 


                XmlElement xesub1 = xmldoc.CreateElement("title");
                xesub1.InnerText = "CS从入门到精通";//设置文本节点 
                xe1.AppendChild(xesub1);//添加到<Node>节点中 
                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);//添加到<Employees>节点中 
            }
            //保存创建好的XML文档
            xmldoc.Save(Server.MapPath("data.xml"));


        }
        /// <summary>
        /// 第二种生成xml文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button2_Click(object sender, EventArgs e)
        {
            XmlTextWriter xmlWriter;
            string strFilename = Server.MapPath("data1.xml");


            xmlWriter = new XmlTextWriter(strFilename, Encoding.Default);//创建一个xml文档
            xmlWriter.Formatting = Formatting.Indented;
            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("Employees");


            xmlWriter.WriteStartElement("Node");
            xmlWriter.WriteAttributeString("genre", "李赞红");
            xmlWriter.WriteAttributeString("ISBN", "2-3631-4");


            xmlWriter.WriteStartElement("title");
            xmlWriter.WriteString("CS从入门到精通");
            xmlWriter.WriteEndElement();


            xmlWriter.WriteStartElement("author");
            xmlWriter.WriteString("候捷");
            xmlWriter.WriteEndElement();


            xmlWriter.WriteStartElement("price");
            xmlWriter.WriteString("58.3");
            xmlWriter.WriteEndElement();


            xmlWriter.WriteEndElement();


            xmlWriter.Close();
        }
        /// <summary>
        /// 添加一个节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button3_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("data.xml"));
            XmlNode root = xmlDoc.SelectSingleNode("Employees");//查找<Employees> 
            XmlElement xe1 = xmlDoc.CreateElement("Node");//创建一个<Node>节点 
            xe1.SetAttribute("genre", "张三");//设置该节点genre属性 
            xe1.SetAttribute("ISBN", "1-1111-1");//设置该节点ISBN属性 


            XmlElement xesub1 = xmlDoc.CreateElement("title");
            xesub1.InnerText = "C#入门帮助";//设置文本节点 
            xe1.AppendChild(xesub1);//添加到<Node>节点中 
            XmlElement xesub2 = xmlDoc.CreateElement("author");
            xesub2.InnerText = "高手";
            xe1.AppendChild(xesub2);
            XmlElement xesub3 = xmlDoc.CreateElement("price");
            xesub3.InnerText = "158.3";
            xe1.AppendChild(xesub3);


            root.AppendChild(xe1);//添加到<Employees>节点中 
            xmlDoc.Save(Server.MapPath("data.xml"));
        }


        /// <summary>
        /// 修改节点的值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button4_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("data.xml"));


            XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 


            foreach (XmlNode xn in nodeList)//遍历所有子节点 
            {
                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
                if (xe.GetAttribute("genre") == "张三")//如果genre属性值为“张三” 
                {
                    xe.SetAttribute("genre", "update张三");//则修改该属性为“update张三” 


                    XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点 
                    foreach (XmlNode xn1 in nls)//遍历 
                    {
                        XmlElement xe2 = (XmlElement)xn1;//转换类型 
                        if (xe2.Name == "author")//如果找到 
                        {
                            xe2.InnerText = "亚胜";//则修改
                        }
                    }
                }
            }
            xmlDoc.Save(Server.MapPath("data.xml"));//保存。
        }
        /// <summary>
        /// 修改节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button5_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("data.xml"));


            XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 


            foreach (XmlNode xn in nodeList)
            {
                XmlElement xe = (XmlElement)xn;
                xe.SetAttribute("test", "111111");


                XmlElement xesub = xmlDoc.CreateElement("flag");
                xesub.InnerText = "1";
                xe.AppendChild(xesub);
            }
            xmlDoc.Save(Server.MapPath("data.xml"));
        }
        /// <summary>
        /// 删除结点中的某一个属性
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button6_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("data.xml"));
            XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes;
            foreach (XmlNode xn in xnl)
            {
                XmlElement xe = (XmlElement)xn;
                xe.RemoveAttribute("genre");//删除genre属性 


                XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点 
                foreach (XmlNode xn1 in nls)//遍历 
                {
                    XmlElement xe2 = (XmlElement)xn1;//转换类型 
                    if (xe2.Name == "flag")//如果找到 
                    {
                        xe.RemoveChild(xe2);//则删除
                    }
                }
            }
            xmlDoc.Save(Server.MapPath("data.xml")); 
        }
        /// <summary>
        /// 删除节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button7_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("data.xml"));
            XmlNode root = xmlDoc.SelectSingleNode("Employees");
            XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes;
            for (int i = 0; i < xnl.Count; i++)
            {
                XmlElement xe = (XmlElement)xnl.Item(i);
                if (xe.GetAttribute("genre") == "张三")
                {
                    root.RemoveChild(xe);
                    if (i < xnl.Count) i = i - 1;
                }
            }
            xmlDoc.Save(Server.MapPath("data.xml")); 
        }
        /// <summary>
        /// 显示xml信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button8_Click(object sender, EventArgs e)
        {
            System.IO.StreamReader myFile = new
    System.IO.StreamReader(Server.MapPath("data.xml"), System.Text.Encoding.Default);
            //注意System.Text.Encoding.Default


            string myString = myFile.ReadToEnd();//myString是读出的字符串
            this.Xml1.DocumentContent = myString;
            myFile.Close();
        }
    }


    郭哲

    2012年2月13日 9:08

全部回复

  • dear

    你可以用ORM+序列化

    ORM参考

    http://www.dotblogs.com.tw/yc421206/archive/2011/03/07/21706.aspx

    http://www.dotblogs.com.tw/regionbbs/Tags/ORM/default.aspx


    序列化

    http://www.dotblogs.com.tw/yc421206/archive/2011/05/20/25595.aspx

    http://www.dotblogs.com.tw/yc421206/archive/2011/07/08/31290.aspx

    http://www.dotblogs.com.tw/yc421206/archive/2011/02/20/21469.aspx

    http://www.dotblogs.com.tw/yc421206/archive/2011/06/03/26979.aspx

    http://www.dotblogs.com.tw/yc421206/archive/2012/01/09/65028.aspx


    TreeView的DataBinding

    http://www.codeproject.com/Articles/7884/Data-Binding-TreeView-in-C

    Entity定義XML Attritube

    http://www.dotblogs.com.tw/yc421206/archive/2011/12/26/63366.aspx


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    • 已建议为答案 zjyh16 2012年2月13日 15:20
    2012年2月8日 8:28
  • 尝试下使用XML序列化,详见:http://msdn.microsoft.com/zh-cn/library/182eeyhh(v=VS.80).aspx

    分享与互助~~小站:http://www.cnblogs.com/knightluffy/

    • 已建议为答案 zjyh16 2012年2月13日 15:20
    2012年2月9日 2:02
  • 谢谢您的回答,由treeview生成XML,在我这边比较麻烦呢,因为XML的结构不只一个属性节点,有多个属性节点,但是我绑定到treeview上的只有2个属性节点。

    如果由treeview生成XML文档的话,只能生成2个属性节点,这并不是我想要的。

    附:

    <root Index="0" value="中国" name="00" Country="China">
      <province Index="1" value="01" name="四川省" Volume="1" Frequency="91.8">
        <City Index="20" value="02" name="资中县" Volume="1" Frequency="91.8">
          <Piecearea Index="300" value="101" name="罗泉镇" Volume="1" Frequency="91.8">
            <Town Index="4000" value="001" name="新丰村" Volume="0" Frequency="93.8">
              <Equipmentn Index="50000" value="020" name="1号设备" Volume="1" Frequency="91.8" />
              <Equipmentn Index="50001" value="002" name="2号设备" Volume="1" Frequency="91.8" />
              <Equipmentn Index="50002" value="003" name="3号设备" Volume="1" Frequency="91.8" />
            </Town>
            <Town Index="4001" value="002" name="星火村" Volume="2" Frequency="94.8">
              <Equipmentn value="001" name="1号设备" Volume="1" Frequency="91.8" />
              <Equipmentn value="006" name="2号设备" Volume="1" Frequency="91.8" />
            </Town>
          </Piecearea>
          <Piecearea Index="301" value="102" name="银山镇" Volume="1" Frequency="91.8">
            <Town value="001" name="杨村" Volume="2" Frequency="94.8">
              <Equipmentn value="001" name="1号设备" />
              <Equipmentn value="010" name="1号设备" />
            </Town>

    这只是XML文档的一部分!我绑定treeview上的只有value和name属性节点。

    2012年2月9日 13:14
  • 非常感谢您的回答,我还是菜鸟,对操作XML还刚上手,学了一星期只能做到普通的增删改查。您的建议对于我现在的情况我暂时还无法去理解,只能后面有时间去了解了。
    2012年2月9日 13:24
  • 非常感谢您的回答,对于XML还刚上手。已经收藏了该网址,有时间在去了解,还是非常感谢大家的解答,这个问题现在还没解决。在找解决的方法中。
    2012年2月9日 13:26
  • 谢谢您的回答,由treeview生成XML,在我这边比较麻烦呢,因为XML的结构不只一个属性节点,有多个属性节点,但是我绑定到treeview上的只有2个属性节点。

    如果由treeview生成XML文档的话,只能生成2个属性节点,这并不是我想要的。

    附:

    <root Index="0" value="中国" name="00" Country="China">
      <province Index="1" value="01" name="四川省" Volume="1" Frequency="91.8">
        <City Index="20" value="02" name="资中县" Volume="1" Frequency="91.8">
          <Piecearea Index="300" value="101" name="罗泉镇" Volume="1" Frequency="91.8">
            <Town Index="4000" value="001" name="新丰村" Volume="0" Frequency="93.8">
              <Equipmentn Index="50000" value="020" name="1号设备" Volume="1" Frequency="91.8" />
              <Equipmentn Index="50001" value="002" name="2号设备" Volume="1" Frequency="91.8" />
              <Equipmentn Index="50002" value="003" name="3号设备" Volume="1" Frequency="91.8" />
            </Town>
            <Town Index="4001" value="002" name="星火村" Volume="2" Frequency="94.8">
              <Equipmentn value="001" name="1号设备" Volume="1" Frequency="91.8" />
              <Equipmentn value="006" name="2号设备" Volume="1" Frequency="91.8" />
            </Town>
          </Piecearea>
          <Piecearea Index="301" value="102" name="银山镇" Volume="1" Frequency="91.8">
            <Town value="001" name="杨村" Volume="2" Frequency="94.8">
              <Equipmentn value="001" name="1号设备" />
              <Equipmentn value="010" name="1号设备" />
            </Town>

    这只是XML文档的一部分!我绑定treeview上的只有value和name属性节点。

    统一绑定若干个属性到TreeView节点,然后输出到xml。

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年2月11日 4:17
    版主
  • <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>


    <!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></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="自动生成xml文件" 
                onclick="Button1_Click" Width="146px" />
            <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="第二种方法生成" 
                Width="191px" />
            <asp:Button ID="Button3" runat="server" onclick="Button3_Click" Text="添加一个节点" 
                Width="126px" />
            <asp:Button ID="Button4" runat="server" onclick="Button4_Click" Text="修改节点值" 
                Width="136px" />
            <asp:Button ID="Button5" runat="server" onclick="Button5_Click" Text="修改节点" 
                Width="142px" />
            <br />
            <asp:Button ID="Button6" runat="server" onclick="Button6_Click" 
                Text="删除结点中的某一个属性" Width="148px" />
            <asp:Button ID="Button7" runat="server" onclick="Button7_Click" 
                style="margin-left: 0px" Text="删除结点" Width="195px" />
            <asp:Button ID="Button8" runat="server" onclick="Button8_Click" 
                style="height: 21px" Text="Button" Width="121px" />
            <asp:Xml ID="Xml1" runat="server"></asp:Xml>
        </div>
        </form>
    </body>
    </html>
    -------------------------------------------------------------

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;


    using System.Xml;
    using System.Text;
    public partial class _Default : System.Web.UI.Page
    {
        XmlDocument xmldoc;
        XmlNode xmlnode;
        XmlElement xmlelem;
        protected void Page_Load(object sender, EventArgs e)
        {


        }


        /// <summary>
        /// 第一种生成xml文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click(object sender, EventArgs e)
        {
            //方法一:
            xmldoc = new XmlDocument();
            //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
            XmlDeclaration xmldecl;
            xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null);
            xmldoc.AppendChild(xmldecl);


            //加入一个根元素
            xmlelem = xmldoc.CreateElement("", "Employees", "");
            xmldoc.AppendChild(xmlelem);
            //加入另外一个元素
            for (int i = 1; i < 3; i++)
            {


                XmlNode root = xmldoc.SelectSingleNode("Employees");//查找<Employees> 
                XmlElement xe1 = xmldoc.CreateElement("Node");//创建一个<Node>节点 
                xe1.SetAttribute("genre", "李赞红");//设置该节点genre属性 
                xe1.SetAttribute("ISBN", "2-3631-4");//设置该节点ISBN属性 


                XmlElement xesub1 = xmldoc.CreateElement("title");
                xesub1.InnerText = "CS从入门到精通";//设置文本节点 
                xe1.AppendChild(xesub1);//添加到<Node>节点中 
                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);//添加到<Employees>节点中 
            }
            //保存创建好的XML文档
            xmldoc.Save(Server.MapPath("data.xml"));


        }
        /// <summary>
        /// 第二种生成xml文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button2_Click(object sender, EventArgs e)
        {
            XmlTextWriter xmlWriter;
            string strFilename = Server.MapPath("data1.xml");


            xmlWriter = new XmlTextWriter(strFilename, Encoding.Default);//创建一个xml文档
            xmlWriter.Formatting = Formatting.Indented;
            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("Employees");


            xmlWriter.WriteStartElement("Node");
            xmlWriter.WriteAttributeString("genre", "李赞红");
            xmlWriter.WriteAttributeString("ISBN", "2-3631-4");


            xmlWriter.WriteStartElement("title");
            xmlWriter.WriteString("CS从入门到精通");
            xmlWriter.WriteEndElement();


            xmlWriter.WriteStartElement("author");
            xmlWriter.WriteString("候捷");
            xmlWriter.WriteEndElement();


            xmlWriter.WriteStartElement("price");
            xmlWriter.WriteString("58.3");
            xmlWriter.WriteEndElement();


            xmlWriter.WriteEndElement();


            xmlWriter.Close();
        }
        /// <summary>
        /// 添加一个节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button3_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("data.xml"));
            XmlNode root = xmlDoc.SelectSingleNode("Employees");//查找<Employees> 
            XmlElement xe1 = xmlDoc.CreateElement("Node");//创建一个<Node>节点 
            xe1.SetAttribute("genre", "张三");//设置该节点genre属性 
            xe1.SetAttribute("ISBN", "1-1111-1");//设置该节点ISBN属性 


            XmlElement xesub1 = xmlDoc.CreateElement("title");
            xesub1.InnerText = "C#入门帮助";//设置文本节点 
            xe1.AppendChild(xesub1);//添加到<Node>节点中 
            XmlElement xesub2 = xmlDoc.CreateElement("author");
            xesub2.InnerText = "高手";
            xe1.AppendChild(xesub2);
            XmlElement xesub3 = xmlDoc.CreateElement("price");
            xesub3.InnerText = "158.3";
            xe1.AppendChild(xesub3);


            root.AppendChild(xe1);//添加到<Employees>节点中 
            xmlDoc.Save(Server.MapPath("data.xml"));
        }


        /// <summary>
        /// 修改节点的值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button4_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("data.xml"));


            XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 


            foreach (XmlNode xn in nodeList)//遍历所有子节点 
            {
                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
                if (xe.GetAttribute("genre") == "张三")//如果genre属性值为“张三” 
                {
                    xe.SetAttribute("genre", "update张三");//则修改该属性为“update张三” 


                    XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点 
                    foreach (XmlNode xn1 in nls)//遍历 
                    {
                        XmlElement xe2 = (XmlElement)xn1;//转换类型 
                        if (xe2.Name == "author")//如果找到 
                        {
                            xe2.InnerText = "亚胜";//则修改
                        }
                    }
                }
            }
            xmlDoc.Save(Server.MapPath("data.xml"));//保存。
        }
        /// <summary>
        /// 修改节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button5_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("data.xml"));


            XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 


            foreach (XmlNode xn in nodeList)
            {
                XmlElement xe = (XmlElement)xn;
                xe.SetAttribute("test", "111111");


                XmlElement xesub = xmlDoc.CreateElement("flag");
                xesub.InnerText = "1";
                xe.AppendChild(xesub);
            }
            xmlDoc.Save(Server.MapPath("data.xml"));
        }
        /// <summary>
        /// 删除结点中的某一个属性
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button6_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("data.xml"));
            XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes;
            foreach (XmlNode xn in xnl)
            {
                XmlElement xe = (XmlElement)xn;
                xe.RemoveAttribute("genre");//删除genre属性 


                XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点 
                foreach (XmlNode xn1 in nls)//遍历 
                {
                    XmlElement xe2 = (XmlElement)xn1;//转换类型 
                    if (xe2.Name == "flag")//如果找到 
                    {
                        xe.RemoveChild(xe2);//则删除
                    }
                }
            }
            xmlDoc.Save(Server.MapPath("data.xml")); 
        }
        /// <summary>
        /// 删除节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button7_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("data.xml"));
            XmlNode root = xmlDoc.SelectSingleNode("Employees");
            XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes;
            for (int i = 0; i < xnl.Count; i++)
            {
                XmlElement xe = (XmlElement)xnl.Item(i);
                if (xe.GetAttribute("genre") == "张三")
                {
                    root.RemoveChild(xe);
                    if (i < xnl.Count) i = i - 1;
                }
            }
            xmlDoc.Save(Server.MapPath("data.xml")); 
        }
        /// <summary>
        /// 显示xml信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button8_Click(object sender, EventArgs e)
        {
            System.IO.StreamReader myFile = new
    System.IO.StreamReader(Server.MapPath("data.xml"), System.Text.Encoding.Default);
            //注意System.Text.Encoding.Default


            string myString = myFile.ReadToEnd();//myString是读出的字符串
            this.Xml1.DocumentContent = myString;
            myFile.Close();
        }
    }


    郭哲

    2012年2月13日 9:08
  • Hi WJF_Dev,

    欢迎来到MSDN论坛!

    请问您的问题处理的怎么样了?

    我暂时标记了几个回复为答案。如果您认为所mark的回复没有帮助,可以unmark (点击"取消答复标记")。

    谢谢您的理解!

    祝,顺利!

    yoyo


    Yoyo Jiang[MSFT]
    MSDN Community Support | Feedback to us

    2012年2月17日 1:50
    版主