C# 自製 專門XML設定檔 讀寫類別

C# 自製 專門XML設定檔 讀寫類別

C# 自製 專門XML設定檔 讀寫類別


資料來源: http://www.syris.com/index.php

線上編譯器: https://dotnetfiddle.net/


Code

using System;
using System.Diagnostics;
using System.Security.Cryptography;
using System.Text;
using System.Xml;

public class Encrypt
{
    //預設金鑰向量
    private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };



    /// <summary>
    /// DES加密字串
    /// </summary>
    /// <param name="encryptString">待加密的字串</param>
    /// <param name="encryptKey">加密金鑰,要求為8位</param>
    /// <returns>加密成功返回加密後的字串,失敗返回源串</returns>
    public static string EncryptDES(string source)
    {
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        byte[] key = Encoding.ASCII.GetBytes("12345678");
        byte[] iv = Encoding.ASCII.GetBytes("87654321");
        byte[] dataByteArray = Encoding.UTF8.GetBytes(source);

        des.Key = key;
        des.IV = iv;
        string encrypt = "";
        using (MemoryStream ms = new MemoryStream())
        using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
        {
            cs.Write(dataByteArray, 0, dataByteArray.Length);
            cs.FlushFinalBlock();
            encrypt = Convert.ToBase64String(ms.ToArray());
        }
        return encrypt;
    }


    /// <summary>
    /// DES解密字串
    /// </summary>
    /// <param name="decryptString">待解密的字串</param>
    /// <param name="decryptKey">解密金鑰,要求為8位,和加密金鑰相同</param>
    /// <returns>解密成功返回解密後的字串,失敗返源串</returns>
    public static string DecryptDES(string encrypt)
    {
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        byte[] key = Encoding.ASCII.GetBytes("12345678");
        byte[] iv = Encoding.ASCII.GetBytes("87654321");
        des.Key = key;
        des.IV = iv;

        byte[] dataByteArray = Convert.FromBase64String(encrypt);
        using (MemoryStream ms = new MemoryStream())
        {
            using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
            {
                cs.Write(dataByteArray, 0, dataByteArray.Length);
                cs.FlushFinalBlock();
                return Encoding.UTF8.GetString(ms.ToArray());
            }
        }
    }
}

public class SettingFile
{
    public int m_intLanguages;
    public String m_StrSMTPServer;
    public int m_intSMTPPort;
    public String m_StrSMTPName;
    public String m_StrSMTPEmail;
    public String m_StrSMTPID;
    public String m_StrSMTPPW;
    public String m_StrSMTPTitle;
    public String m_StrSMTPContent;
    public Boolean m_blnSMTPCheck;
    public Boolean m_blnSMTPSSL;
    public String m_StrTest;
    public SettingFile()
    {
        m_intLanguages = 1;
        m_StrSMTPServer = "";
        m_intSMTPPort = -1;
        m_StrSMTPName = "";
        m_StrSMTPEmail = "";
        m_StrSMTPID = "";
        m_StrSMTPPW = "";
        m_StrSMTPTitle = "";
        m_StrSMTPContent = "";
        m_blnSMTPCheck = false;
        m_blnSMTPSSL = false;
        m_StrTest = "";
    }
    public void saveSettingXML()
    {
        //XmlTextWriter XTW = new XmlTextWriter(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\W_B_Setting.xml", Encoding.UTF8);
        XmlTextWriter XTW = new XmlTextWriter("ConsoleXML.xml", Encoding.UTF8); 
        XTW.WriteStartDocument();

        XTW.WriteStartElement("Setting");

        XTW.WriteElementString("Languages", "" + m_intLanguages);
        XTW.WriteElementString("SMTPServer", m_StrSMTPServer);
        XTW.WriteElementString("SMTPPort", "" + m_intSMTPPort);
        XTW.WriteElementString("SMTPName", m_StrSMTPName);
        XTW.WriteElementString("SMTPEmail", m_StrSMTPEmail);
        XTW.WriteElementString("SMTPID", m_StrSMTPID);
        XTW.WriteElementString("SMTPPW", Encrypt.EncryptDES(m_StrSMTPPW));
        XTW.WriteElementString("SMTPTitle", m_StrSMTPTitle);
        XTW.WriteElementString("SMTPContent", m_StrSMTPContent);
        XTW.WriteElementString("SMTPCheck", m_blnSMTPCheck.ToString());
        XTW.WriteElementString("SMTPSSL", m_blnSMTPSSL.ToString());
        XTW.WriteElementString("SMTPTest", m_StrTest);

        XTW.Flush();
        XTW.Close();
    }
    public void readSettingXML()
    {
        try
        {
            XmlDocument xd = new XmlDocument();

            //xd.Load(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\W_B_Setting.xml");
            xd.Load("ConsoleXML.xml");

            XmlNode root = xd.SelectSingleNode("//Setting");
            int i = 0;
            foreach (XmlElement elm in root.ChildNodes)
            {
                switch (i)
                {
                    case 00:
                        m_intLanguages = Convert.ToInt32(elm.InnerText.Trim(), 10);
                        break;
                    case 01:
                        m_StrSMTPServer = elm.InnerText.Trim();
                        break;
                    case 02:
                        m_intSMTPPort = Convert.ToInt32(elm.InnerText.Trim(), 10);
                        break;
                    case 03:
                        m_StrSMTPName = elm.InnerText.Trim();
                        break;
                    case 04:
                        m_StrSMTPEmail = elm.InnerText.Trim();
                        break;
                    case 05:
                        m_StrSMTPID = elm.InnerText.Trim();
                        break;
                    case 06:
                        m_StrSMTPPW = Encrypt.DecryptDES(elm.InnerText.Trim());
                        break;
                    case 07:
                        m_StrSMTPTitle = elm.InnerText.Trim();
                        break;
                    case 08:
                        m_StrSMTPContent = elm.InnerText.Trim();
                        break;
                    case 09:
                        m_blnSMTPCheck = Convert.ToBoolean(elm.InnerText.Trim());
                        break;
                    case 10:
                        m_blnSMTPSSL = Convert.ToBoolean(elm.InnerText.Trim());
                        break;
                    case 11:
                        m_StrTest = elm.InnerText.Trim();
                        break;
                }
                i++;
                Console.WriteLine(elm.Name.Trim() + ":" + elm.InnerText.Trim());
            }      
        }
        catch
        {
            m_intLanguages = 1;
            m_StrSMTPServer = "";
            m_intSMTPPort = -1;
            m_StrSMTPName = "";
            m_StrSMTPEmail = "";
            m_StrSMTPID = "";
            m_StrSMTPPW = "";
            m_StrSMTPTitle = "";
            m_StrSMTPContent = "";
            m_blnSMTPCheck = false;
            m_blnSMTPSSL = false;
            m_StrTest = "";
        }
    }
}
public class Program
{
    static void Pause()
    {
        Console.Write("Press any key to continue...");
        Console.ReadKey(true);
    }
    public static void Main()
    {
        SettingFile SettingFileBuf=new SettingFile();
        SettingFileBuf.saveSettingXML();
        SettingFileBuf.readSettingXML();
        Pause();
    }
}



發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *