xml文件操作初步

来源:互联网 发布:软件培训机构网站 编辑:程序博客网 时间:2024/06/06 02:28

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.IO;

namespace XmlTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"f:/mpw/Visual Studio 2005/Projects/File1.xml";
            string newpath = @"f:/mpw/Visual Studio 2005/Projects/File2.xml";
            string path1 = @"f:/mpw/Visual Studio 2005/Projects/File3.xml";
            try
            {
                XmlWriterSettings mysetting = new XmlWriterSettings();
                mysetting.Indent = true;
                mysetting.IndentChars = ("    ");

                XmlWriter mywriter = XmlWriter.Create(path, mysetting);

                mywriter.WriteStartElement("people");
                mywriter.WriteAttributeString("sex", "male");
                mywriter.WriteElementString("name", "zhang");
                mywriter.WriteEndElement();
                mywriter.Flush();
                mywriter.Close();

                //往<people>节点中插入一个<book>节点:
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(path);
                XmlNode root = xmlDoc.SelectSingleNode("people");//查找<people>

                XmlElement Root = (XmlElement)root;
                Root.SetAttribute("genre","fantasy");

               
                XmlElement Xe1 = xmlDoc.CreateElement("book");
                Xe1.SetAttribute("genre", "fantasy");
                Xe1.SetAttribute("ISBN", "2-3631-3");
                XmlElement Xesub1 = xmlDoc.CreateElement("title");
                Xesub1.InnerText = "Oberon's Legacy";//设置文本节点
                Xe1.AppendChild(Xesub1);//添加到<book>节点中
                XmlElement Xesub2 = xmlDoc.CreateElement("author");
                Xesub2.InnerText = "小马";
                Xe1.AppendChild(Xesub2);
                XmlElement Xesub3 = xmlDoc.CreateElement("price");
                Xesub3.InnerText = "5.3";
                Xe1.AppendChild(Xesub3);

               

                XmlElement xe1 = xmlDoc.CreateElement("book");//创建一个<book>节点
                xe1.SetAttribute("genre", "李赞红");//设置该节点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);//添加到<people>节点中
                Root.AppendChild(Xe1);
                xmlDoc.Save(path);
              
                //修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
                XmlNodeList nodeList = xmlDoc.SelectSingleNode("people").ChildNodes;//获取people节点的所有子节点
                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 = "亚胜";//则修改
                                break;//找到退出来就可以了
                            }
                        }
                        break;
                    }
                }

                xmlDoc.Save(path);//保存。

                //显示所有数据。
                XmlNode Xn = xmlDoc.SelectSingleNode("people");

                XmlNodeList xnt = Xn.ChildNodes;

                foreach (XmlNode xnf in xnt)
                {
                    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);//显示子节点点文本
                    }
                }

                //删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。
               XmlNodeList xnl = xmlDoc.SelectSingleNode("people").ChildNodes;

                foreach (XmlNode xn in xnl)
                {
                    XmlElement xe = (XmlElement)xn;
                   if (xe.GetAttribute("genre") == "fantasy")
                  {
                      xe.RemoveAttribute("genre");//删除genre属性
                  }
                   else if (xe.GetAttribute("genre") == "update李赞红")
                    {
                        xe.RemoveAll();//删除该节点的全部内容
                    }
                }
                xmlDoc.Save(path);
               
                //copy file1 to file2
                XmlReader myreader = XmlReader.Create(path);

                XmlWriter myWriter = XmlWriter.Create(newpath, mysetting);
                myWriter.WriteNode(myreader, true);
                myWriter.Flush();
                myWriter.Close();
               
                //将f:/mpw/Visual Studio 2005/Projects/zzbds文件夹下的cs文件显示到file3.xml中
                XmlWriter xw = XmlWriter.Create(path1);
                xw.WriteComment("hehehe");
                xw.WriteComment("yeah");
                xw.WriteStartElement("root");

                xw.WriteComment("路径");
                xw.WriteStartElement("folders");
                getFile(@"f:/mpw/Visual Studio 2005/Projects", xw);

                xw.WriteEndElement();
                xw.WriteEndElement();
                xw.Close();

            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Console.ReadLine();
        }
        static void getFile(string path, XmlWriter xw)
        {
            foreach (string subPath in Directory.GetDirectories(path))
            {
                getFile(subPath, xw);
            }
            foreach (string fileName in Directory.GetFiles(path, "*.cs"))
            {
                xw.WriteStartElement("data");
                xw.WriteAttributeString("name", Path.GetFileName(fileName));
                xw.WriteStartElement("value");
                xw.WriteValue(Path.GetDirectoryName(fileName));
                xw.WriteEndElement();
                xw.WriteEndElement();
            }
        }
    }
}

原创粉丝点击