1. 程式人生 > 實用技巧 >C#對XML檔案的讀寫

C#對XML檔案的讀寫

將Ini檔案儲存換成XML檔案儲存(此處和ini檔案一樣儲存資料庫同步軟體的相關資訊)

該圖是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進行相關的學習和交流。