zoukankan      html  css  js  c++  java
  • C#对XML文件的读写

    将Ini文件存储换成XML文件保存(此处和ini文件一样保存数据库同步软件的相关信息)

    这是一个和书店相关的XML写入方法:

    //XML文件写方法
            //编写XML文件的格式并存储到指定的FilePath(路径)
            internal void WriterXML(string FilePath) {
               
                try {
                    XmlDocument doc = new XmlDocument();//声明一个XmlDocument作为XML文档的容器
                    //XmlDeclaration xmlDec = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
                    XmlElement BookStory = doc.CreateElement("BookStory");//XMLElement表示一个标记或者元素的开始
                    XmlAttribute Address = doc.CreateAttribute("Address");//XmlAttribute表示一个标记或者元素的属性
                    Address.InnerText = "福建省厦门市集美新馆";//InnerText表示某一元素的内容
                    BookStory.SetAttribute("Type", "On_Line");
                    BookStory.SetAttribute("CreatTime", DateTime.Now.ToLongTimeString());
                    XmlElement Book = doc.CreateElement("Book");
                    XmlElement Tittle = doc.CreateElement("Tittle");
                    Tittle.SetAttribute("Type", "BooksName");
                    Tittle.InnerText = "C#7.0核心技术指南";
                    XmlElement Price = doc.CreateElement("Price");
                    Price.SetAttribute("Type", "RMB");
                    Price.InnerText = "259.00";
                    //doc.AppendChild(xmlDec);
                    doc.AppendChild(BookStory);
                    BookStory.AppendChild(Book);
                    BookStory.Attributes.Append(Address);
                    Book.AppendChild(Tittle);
                    Book.AppendChild(Price);
                    XmlWriterSettings settings = new XmlWriterSettings();//指定XMLWriter类实现的功能
                    settings.Indent = true;
                    settings.Encoding = Encoding.UTF8;//定义编码格式
                    XmlWriter writer = XmlWriter.Create(FilePath, settings);//Create 方法使用 XmlWriterSettings 类指定要在创建的 XmlWriter 对象中实现哪些功能。
                    doc.WriteTo(writer);
                    writer.Flush();//清除缓存区
                    writer.Close();
                    MessageBox.Show("This Ok!");
                } catch (Exception ex) {
                    MessageBox.Show(ex.Message);
                }
            }
    View Code

    结果截图:

    以下是对XML文件读写的学习以后根据自己的需求的衍生:

    该图是XML文件写入格式以及相关数据的方法:

            //XML文件写入数据库同步的基础数据以及XML设计格式
            internal void WriterInfo(string FilePath) {
                XmlDocument doc = new XmlDocument();
                XmlElement XML = doc.CreateElement("XML");
                XmlElement Conn = doc.CreateElement("Conn");
                Conn.SetAttribute("Name","Conn1");
                Conn.SetAttribute("Type", "SQL Server数据库");
                XmlElement Source = doc.CreateElement("Source");
                XmlElement SServer = doc.CreateElement("SServer");
                XmlElement SIdentity = doc.CreateElement("SIdentity");
                XmlElement SDataBase = doc.CreateElement("SDataBase");
                XmlElement SUserID = doc.CreateElement("SUserID");
                XmlElement SPwd = doc.CreateElement("SPwd");
                XmlElement Target = doc.CreateElement("Target");
                XmlElement TServer = doc.CreateElement("TServer");
                XmlElement TIdentity = doc.CreateElement("TIdentity");
                XmlElement TDataBase = doc.CreateElement("TDataBase");
                XmlElement TUserID = doc.CreateElement("TUserID");
                XmlElement TPwd = doc.CreateElement("TPwd");
                doc.AppendChild(XML);
                XML.AppendChild(Conn);
                Conn.AppendChild(Source);
                Conn.AppendChild(Target);
                Source.AppendChild(SServer);
                Source.AppendChild(SIdentity);
                Source.AppendChild(SDataBase);
                Source.AppendChild(SUserID);
                Source.AppendChild(SPwd);
                Target.AppendChild(TServer);
                Target.AppendChild(TIdentity);
                Target.AppendChild(TDataBase);
                Target.AppendChild(TUserID);
                Target.AppendChild(TPwd);
                SServer.InnerText = "123.123.123";
                TServer.InnerText = "00000000";
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Indent = true;
                settings.Encoding = Encoding.UTF8;
                XmlWriter writer = XmlWriter.Create(FilePath,settings);
                doc.WriteTo(writer);
                writer.Flush();
                writer.Close();
                MessageBox.Show("It's Ok!");
            }

     该图是读取相关数据

     

    //XML读取数据(数据库同步相关数据)
            /// <summary>
            /// 返回一个SQLModel的类集合
            /// </summary>
            /// <param name="FilePath">路径</param>
            /// <returns></returns>
            internal List<SQLModel> XMLReaders(string FilePath) {
                List<SQLModel> XMLInfo = new List<SQLModel>();
                XmlDocument doc = new XmlDocument();
                doc.Load(FilePath);
                XmlNode node1 = doc.SelectSingleNode("XML");
                /*XmlNode node2 = node1.SelectSingleNode("Conn");
                XmlNode node3 = node2.SelectSingleNode("Source");*/
                XmlNodeList node = node1.ChildNodes;//node = Conn1,Conn2....
                foreach (XmlNode item in node) {//this level is Conn
                    SQLModel sQL = new SQLModel();
                    XmlElement xml = (XmlElement)item;//item = one of Conn = xml 
                    sQL.ConnName = xml.GetAttribute("Name").ToString();
                    sQL.Type = xml.GetAttribute("Type").ToString();
                    XmlNodeList Second = item.ChildNodes;//Second =  Source and Target
                    foreach (XmlNode Snode in Second) {
                        if (Snode.Name == "Source") {
                            XmlNodeList SnodeChild = Snode.ChildNodes;
                            sQL.SServer = SnodeChild.Item(0).InnerText;
                            sQL.SIdentity = SnodeChild.Item(1).InnerText;
                            sQL.SDataBase = SnodeChild.Item(2).InnerText;
                            sQL.SUserID = SnodeChild.Item(3).InnerText;
                            sQL.SPwd = SnodeChild.Item(4).InnerText;
                        }
                        if (Snode.Name == "Target") {
                            XmlNodeList SnodeChild = Snode.ChildNodes;
                            sQL.TServer = SnodeChild.Item(0).InnerText;
                            sQL.TIdentity = SnodeChild.Item(1).InnerText;
                            sQL.TDataBase = SnodeChild.Item(2).InnerText;
                            sQL.TUserID = SnodeChild.Item(3).InnerText;
                            sQL.TPwd = SnodeChild.Item(4).InnerText;
                        }
                    }
                    XMLInfo.Add(sQL);
                }
                return XMLInfo;
            }
    View Code

    结果截图:

     

       以下是个人见解:

        目前对比下XML以及Ini两种格式存储数据,发现Ini用来存储类型表格的模式就较为繁杂,若是要存储树形的数据就更为费劲了;XML可以存储树形的数据,功能也更为强大,还支持LinQ,这也是广大程序员选择XML的原因。后续还会对Json进行相关的学习和交流。

  • 相关阅读:
    图像控件 ImageControl
    日期条控件 DateFieldControl
    日期选择器和日期条控件 DateChooserAndDateFieldControls
    计数器控件实例 NumericStepper
    树结构控件实例 TreeControl
    vue2.0leaflet
    关于工具类中@Autowired注入为NULL的问题记录
    zabbix_agentd重装后启动时IPC和共享内存段问题
    rsync如何不指定密码文件
    MySQL5.7 JSON类型及其相关函数的学习
  • 原文地址:https://www.cnblogs.com/Kai-YoungMaster/p/13304782.html
Copyright © 2011-2022 走看看