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