/// <summary> /// Serialize biến keysuite rồi ghi nội dung ra tệp filename /// </summary> /// <param name="filename"></param> /// <param name="keysuite"></param> public static void XmlSerialize(string filename, object obj, MyXmlFileType type, ToolStripProgressBar progress, ToolStripLabel label) { if (progress != null) { progress.Value = 0; } if (label != null) { label.Text = "Đang tạo bản lưu tệp, vui lòng chờ..."; } XmlSerializer xmlserialer = new XmlSerializer(GetXmlFileType(type)); try { TextWriter w = new StreamWriter(filename); if (progress != null) { progress.Value = 50; } xmlserialer.Serialize(w, obj); w.Close(); if (progress != null) { progress.Value = 100; } if (label != null) { label.Text = "Đã lưu tệp xong tệp xong. "; } } catch (IOException ex) { Error(ex.Message); } }
/// <summary> /// Lấy nội dung XML có trong tệp filename rồi gán vào biến obj /// </summary> /// <param name="filename"></param> /// <param name="keysuite">Biến không khởi tạo. Cho null nếu lỗi.</param> public static void XmlDeserialize(string filename, out object obj, MyXmlFileType type, ToolStripProgressBar progress, ToolStripLabel label) { XmlSerializer xmlserialer = new XmlSerializer(GetXmlFileType(type)); if (progress != null) { progress.Value = 0; } if (label != null) { label.Text = "Đang đọc tệp, vui lòng chờ ..."; } try { TextReader r = new StreamReader(filename); if (progress != null) { progress.Value = 50; } obj = xmlserialer.Deserialize(r); r.Close(); if (progress != null) { progress.Value = 100; } if (label != null) { label.Text = "Đã đọc tệp xong. "; } return; } catch (IOException ex) { Error(ex.Message); obj = null; } }
/// <summary> /// Xác định kiểu của obj, sử dụng để Serialize hoặc Deserialize XML /// </summary> /// <param name="obj"></param> /// <returns></returns> public static Type GetXmlFileType(MyXmlFileType type) { Type fileType = typeof(object); switch (type) { case MyXmlFileType.Discovers: fileType = typeof(Discovers); break; case MyXmlFileType.Groups: fileType = typeof(Groups); break; case MyXmlFileType.KeySuite: fileType = typeof(KeySuite); break; case MyXmlFileType.SuiteList: fileType = typeof(SuiteList); break; } return(fileType); }