zoukankan      html  css  js  c++  java
  • C#程序中:如何修改xml文件中的节点(数据)

        要想在web等程序中实现动态的数据内容给新(如网页中的Flash),不会更新xml文件中的节点(数据)是远远不够的,今天在这里说一个简单的xml文件的更新,方法比较基础,很适合初学者看的,保证一看就懂!

    ------------------程序环境下xml文件中的节点、元素

    <items>
      <item 类别="娱乐" 品质="优">
        <title>毛著</title>
        <author>毛爷爷</author>
        <price>10.00</price>
      </item>
      <item 类别="文学" 品质="中">
        <title>流浪记</title>
        <author>三毛</author>
        <price>15.00</price>
      </item>
    </items>

    ----------------------

    下面是程序,这几天写的程序只需要复制到VS中就可以看到效果

    ……

    using System.Xml;
    using System.IO;
    namespace WriteXml

    {

        class Program
        {
            static void Main(string[] args)
            {
                updatexml();//修改节点(数据)
            }

            private static void updatexml()
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("titles.xml");//加载xml文件,文件
                XmlNode xns = xmlDoc.SelectSingleNode("items");//查找要修改的节点

                XmlNodeList xnl = xns.ChildNodes;//取出所有的子节点

                foreach (XmlNode xn in xnl)
                {
                    XmlElement xe = (XmlElement)xn;//将节点转换一下类型
                    if (xe.GetAttribute("类别") == "文学")//判断该子节点是否是要查找的节点
                    {
                        xe.SetAttribute("类别","娱乐")  ;//设置新值
                    }
                    else//为了有更明显的效果,所以不管是否是符合条件的子节点,我都给一个操作
                    {
                        xe.SetAttribute("类别", "文学");
                    }

                    XmlNodeList xnl2 = xe.ChildNodes;//取出该子节点下面的所有元素
                    foreach (XmlNode xn2 in xnl2)
                    {
                        XmlElement xe2 = (XmlElement)xn2;//转换类型
                        if (xe2.Name=="price")//判断是否是要查找的元素
                        {
                            if (xe2.InnerText == "10.00")//判断该元素的值并设置该元素的值
                                xe2.InnerText = "15.00";
                            else
                                xe2.InnerText = "10.00";
                        }
                        //break;//这里为了明显效果 我注释了break,用的时候不用,这个大家都明白的哈
                    }
                    //break;
                }
                xmlDoc.Save("titles.xml");//再一次强调 ,一定要记得保存的该XML文件
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine();
                //readtext();//这个是为了更好的比对修改前和修改后的结果
            }

            //读取Xml文件中的节点元素

            private static void readtext()
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("titles.xml");
                XmlNode xn = xmlDoc.SelectSingleNode("items");
     
                   XmlNodeList xnl=xn.ChildNodes;

                   foreach (XmlNode xnf in xnl)
                   {
                       XmlElement xe = (XmlElement)xnf;
                       Console.Write("类别  "+xe.GetAttribute("类别")+"     品质  ");//显示属性值
                       Console.WriteLine(xe.GetAttribute("品质"));

                       XmlNodeList xnf1 = xe.ChildNodes;
                       foreach (XmlNode xn2 in xnf1)
                       {
                           Console.WriteLine(xn2.InnerText);//显示子节点点文本
                       }
                       Console.WriteLine();
                   }
            }

    }

     转:http://blog.sina.com.cn/s/blog_699337e60100kuix.html

  • 相关阅读:
    2003开机自动登陆然后马上锁定计算机
    修改DNS、网关的VBS代码,不需重起即时生效
    页面自动刷新代码
    dos命令给权限
    无法运行VBS代码
    去掉2003或2kserver版的系统启动报错
    让易语言的信息框总在最前
    教你轻松搞定RJ45网线接头
    小技巧:如何设定永久通用WinRAR压缩密码
    Bootstrap入门教程
  • 原文地址:https://www.cnblogs.com/mvv118/p/3635095.html
Copyright © 2011-2022 走看看