xml序列化

FSRItemManage.Save(ddp, "D://a.xml");


HRExcelConfig hl = (HRExcelConfig)FSRItemManage.Load(typeof(HRExcelConfig), configFileName);

    public class FSRItemManage
    {
        /// <summary>
        /// 指定オブジェクトの属性値をxmlファイルに書き込む
        /// </summary>
        /// <param name="obj">指定オブジェクト</param>
        /// <param name="fileName">xmlファイル名称(フルパス)</param>
        /// <returns>
        /// 正常に保存された場合 TRUE
        /// エラー発生の場合 FALSE
        /// </returns>
        public static bool Save(object obj, string fileName)
        {
            try
            {
                MyXmlSerializer.SerializeObject(obj, fileName);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        /// <summary>
        /// 指定型のオブジェクトの属性値をxmlファイルから読込む
        /// </summary>
        /// <param name="type">オブジェクトの型(Type)</param>
        /// <param name="fileName">xmlファイル名称(フルパス)</param>
        /// <returns></returns>
        public static object Load(Type type, string fileName)
        {
            try
            {
                return MyXmlSerializer.DeserializeObject(type, fileName);
            }
            catch (Exception)
            {
                return null;
            }
        }
    }

 

    public static class MyXmlSerializer //: System.Xml.Serialization.XmlSerializer
    {

        /// <summary>
        /// オブジェクトをシリアル化し、XMLファイルに保存する
        /// </summary>
        /// <param name="obj">シリアル化する対象</param>
        /// <param name="fileName">保存先のファイル名</param>
        public static void SerializeObject(object @obj, string @fileName)
        {
            XmlSerializer serializer = null;
            FileStream fs = null;
            try
            {
                //XmlSerializerオブジェクトを作成
                //書き込むオブジェクトの型を指定する
                serializer = new XmlSerializer(@obj.GetType());
                //ファイルを作成
                fs = new FileStream(@fileName, FileMode.Create);
                //シリアル化し、XMLファイルに保存する
                serializer.Serialize(fs, @obj);
            }
            catch (Exception)
            {
            }
            finally
            {
                //閉じる
                fs.Close();
            }
        }

        /// <summary>
        /// ArrayList型を含むクラスのオブジェクトをシリアル化し、XMLファイルに保存する
        /// </summary>
        /// <param name="obj">シリアル化する対象</param>
        /// <param name="fileName">保存先のファイル名</param>
        /// <param name="types">ArrayListに挿入できるオブジェクト型のType配列</param>
        public static void SerializeObject(object @obj, string @fileName, Type[] @types)
        {
            XmlSerializer serializer = null;
            FileStream fs = null;
            try
            {
                //XmlSerializerオブジェクトを作成
                //書き込むオブジェクトの型を指定する
                serializer = new XmlSerializer(@obj.GetType(), @types);
                //ファイルを作成
                fs = new FileStream(@fileName, FileMode.Create);
                //シリアル化し、XMLファイルに保存する
                serializer.Serialize(fs, @obj);
            }
            catch (Exception)
            {
            }
            finally
            {
                //閉じる
                fs.Close();
            }
        }

        /// <summary>
        /// XMLファイルから読み込み、逆シリアル化する
        /// </summary>
        /// <param name="fileName">保存先のファイル名</param>
        /// <param name="type">逆シリアル化されるオブジェクトのType</param>
        /// <returns></returns>
        public static object DeserializeObject(Type @type, string @fileName)
        {
            XmlSerializer serializer = null;
            FileStream fs = null;
            object obj = null;
            try
            {
                //XmlSerializerオブジェクトの作成
                serializer = new XmlSerializer(@type);
                //ファイルを開く
                fs = new FileStream(@fileName, FileMode.Open);
                //XMLファイルから読み込み、逆シリアル化する
                obj = serializer.Deserialize(fs);
                //return
                return obj;
            }
            catch (Exception)
            {
                return null;
            }
            finally
            {          
                //閉じる
                fs.Close();
            }
        }
    }

 

 

 

    /// 支持XML序列化的泛型 Dictionary
    /// </summary>
    /// <typeparam name="TKey"></typeparam>
    /// <typeparam name="TValue"></typeparam>
    [XmlRoot("SerializableDictionary")]
    public class SerializableDictionary<TKey, TValue>
        : Dictionary<TKey, TValue>, IXmlSerializable
    {

        #region ?造函数
        public SerializableDictionary()
            : base()
        {
        }
        public SerializableDictionary(IDictionary<TKey, TValue> dictionary)
            : base(dictionary)
        {
        }

        public SerializableDictionary(IEqualityComparer<TKey> comparer)
            : base(comparer)
        {
        }

        public SerializableDictionary(int capacity)
            : base(capacity)
        {
        }
        public SerializableDictionary(int capacity, IEqualityComparer<TKey> comparer)
            : base(capacity, comparer)
        {
        }
        protected SerializableDictionary(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
        }
        #endregion
        #region IXmlSerializable Members
        public System.Xml.Schema.XmlSchema GetSchema()
        {
            return null;
        }
        /// <summary>
        /// 从?象的 XML 表示形式生成??象
        /// </summary>
        /// <param name="reader"></param>
        public void ReadXml(System.Xml.XmlReader reader)
        {
            XmlSerializer keySerializer = new XmlSerializer(typeof(TKey));
            XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));
            bool wasEmpty = reader.IsEmptyElement;
            reader.Read();
            if (wasEmpty)
                return;
            while (reader.NodeType != System.Xml.XmlNodeType.EndElement)
            {
                reader.ReadStartElement("item");
                reader.ReadStartElement("key");
                TKey key = (TKey)keySerializer.Deserialize(reader);
                reader.ReadEndElement();
                reader.ReadStartElement("value");
                TValue value = (TValue)valueSerializer.Deserialize(reader);
                reader.ReadEndElement();
                this.Add(key, value);
                reader.ReadEndElement();
                reader.MoveToContent();
            }
            reader.ReadEndElement();
        }

        /**/
        /// <summary>
        /// 将?象???其 XML 表示形式
        /// </summary>
        /// <param name="writer"></param>
        public void WriteXml(System.Xml.XmlWriter writer)
        {
            XmlSerializer keySerializer = new XmlSerializer(typeof(TKey));
            XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));
            foreach (TKey key in this.Keys)
            {
                writer.WriteStartElement("item");
                writer.WriteStartElement("key");
                keySerializer.Serialize(writer, key);
                writer.WriteEndElement();
                writer.WriteStartElement("value");
                TValue value = this[key];
                valueSerializer.Serialize(writer, value);
                writer.WriteEndElement();
                writer.WriteEndElement();
            }
        }
        #endregion
    }

 

 

    [Serializable]
    public class HRItem : ICloneable
    {

        public enum MyXlHAlign
        {
            xlHAlignRight = -4152,
            xlHAlignLeft = -4131,
            xlHAlignJustify = -4130,
            xlHAlignDistributed = -4117,
            xlHAlignCenter = -4108,
            xlHAlignGeneral = 1,
            xlHAlignFill = 5,
            xlHAlignCenterAcrossSelection = 7,
        }

        public enum MyXlVAlign
        {
            xlVAlignTop = -4160,
            xlVAlignJustify = -4130,
            xlVAlignDistributed = -4117,
            xlVAlignCenter = -4108,
            xlVAlignBottom = -4107,
        }

        public enum MyXlLineStyle
        {
            xlLineStyleNone = -4142,
            xlDouble = -4119,
            xlDot = -4118,
            xlDash = -4115,
            xlContinuous = 1,
            xlDashDot = 4,
            xlDashDotDot = 5,
            xlSlantDashDot = 13,
        }

        private string _name = "name";
        /// <summary>
        /// 選択範囲名称
        /// </summary>
        [Browsable(false)]
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        private string _text = "";
        /// <summary>
        /// 選択範囲表示名称
        /// </summary>
        [Browsable(true)]
        [DisplayName("名称")]
        public string Text
        {
            get { return _text; }
            set { _text = value; }
        }

        private string _value = "value";
        /// <summary>
        /// 選択範囲に表示する値(文字列、数値)
        /// </summary>
        [Browsable(true)]
        [DisplayName("値")]
        [Description("選択範囲に表示する値(文字列、数値)")]
        public string Value
        {
            get { return _value; }
            set { _value = value; }
        }

        private string _fontName = "MS Pゴシック";
        /// <summary>
        /// Font名称
        /// </summary>
        [Browsable(true)]
        [DisplayName("Font名称")]
        [Description("Font名称")]
        [ReadOnly(true)]
        public string FontName
        {
            get { return _fontName; }
            set { _fontName = value; }
        }

        private float _fontSize = 12;
        /// <summary>
        /// Fontサイズ
        /// </summary>
        [Browsable(true)]
        [DisplayName("Fontサイズ")]
        [Description("Fontサイズ")]
        public float FontSize
        {
            get { return _fontSize; }
            set { _fontSize = value; }
        }

        private bool _fontBold = false;
        /// <summary>
        /// 文字が太字かどうか
        /// </summary>
        [Browsable(true)]
        [DisplayName("FontBold")]
        [Description("文字が太字かどうか")]
        public bool FontBold
        {
            get { return _fontBold; }
            set { _fontBold = value; }
        }

        //private Font _font;

        //[Browsable(true)]
        //[DisplayName("Font")]
        //[System.Xml.Serialization.XmlIgnoreAttribute]
        //public Font Font
        //{
        //    get
        //    {
        //        if (_fontBold)
        //        {
        //            _font = new Font(_fontName, _fontSize, FontStyle.Bold);
        //        }
        //        else
        //        {
        //            _font = new Font(_fontName, _fontSize, FontStyle.Regular);
        //        }
        //        return _font;
        //    }
        //    set
        //    {
        //        _font = value;
        //        _fontBold = _font.Bold;
        //        _fontSize = _font.Size;
        //        _fontName = _font.Name;
        //    }
        //}

        private int _fontColor = 0;
        /// <summary>
        /// 文字の色
        /// </summary>
        [Browsable(false)]
        public int FontColor
        {
            get { return _fontColor; }
            set { _fontColor = value; }
        }

        private Color _fontColor1;

        [Browsable(true)]
        [DisplayName("文字色")]
        [Description("文字の色")]
        [System.Xml.Serialization.XmlIgnoreAttribute]
        public Color FontColor1
        {
            get
            {
                _fontColor1 = Color.FromArgb(_fontColor);
                return _fontColor1;
            }
            set
            {
                _fontColor1 = value;
                _fontColor = _fontColor1.ToArgb();
            }
        }

        private int _cell1X = 0;
        /// <summary>
        /// 選択範囲のセルX(左上のセル)
        /// </summary>
        [Browsable(true)]
        [DisplayName("Cell1 X")]
        [Description("選択範囲のセルX(左上のセル)")]
        public int Cell1X
        {
            get { return _cell1X; }
            set { _cell1X = value; }
        }

        private int _cell1Y = 0;
        /// <summary>
        /// 選択範囲のセルY(左上のセル)
        /// </summary>
        [Browsable(true)]
        [DisplayName("Cell1 Y")]
        [Description("選択範囲のセルY(左上のセル)")]
        public int Cell1Y
        {
            get { return _cell1Y; }
            set { _cell1Y = value; }
        }

        private int _cell2X = 0;
        /// <summary>
        /// 選択範囲のセルX(右下のセル)
        /// </summary>
        [Browsable(true)]
        [DisplayName("Cell2 X")]
        [Description("選択範囲のセルX(右下のセル)")]
        public int Cell2X
        {
            get { return _cell2X; }
            set { _cell2X = value; }
        }

        private int _cell2Y = 0;
        /// <summary>
        /// 選択範囲のセルY(右下のセル)
        /// </summary>
        [Browsable(true)]
        [DisplayName("Cell2 Y")]
        [Description("選択範囲のセルY(右下のセル)")]
        public int Cell2Y
        {
            get { return _cell2Y; }
            set { _cell2Y = value; }
        }

        private bool _merge = true;
        /// <summary>
        /// 選択範囲を結合するかどうか
        /// </summary>
        [Browsable(true)]
        [DisplayName("結合")]
        [Description("選択範囲を結合するかどうか")]
        public bool Merge
        {
            get { return _merge; }
            set { _merge = value; }
        }

        private double _columnWidth = 0;
        /// <summary>
        /// 列の幅
        /// </summary>
        [Browsable(true)]
        [DisplayName("列の幅")]
        [Description("列の幅")]
        public double ColumnWidth
        {
            get { return _columnWidth; }
            set { _columnWidth = value; }
        }

        private double _rowHeight = 0;
        /// <summary>
        /// 行の高さ
        /// </summary>
        [Browsable(true)]
        [DisplayName("行の高さ")]
        [Description("行の高さ")]
        public double RowHeight
        {
            get { return _rowHeight; }
            set { _rowHeight = value; }
        }

        private int _backColor = 0;
        /// <summary>
        /// 選択範囲の背景色
        /// </summary>
        ///
        [Browsable(false)]
        public int BackColor
        {
            get
            {
                return _backColor;
            }
            set
            {
                _backColor = value;
            }
        }

        private Color _backColor1;

        [Browsable(true)]
        [DisplayName("背景色")]
        [Description("背景色")]
        [System.Xml.Serialization.XmlIgnoreAttribute]
        public Color BackColor1
        {
            get
            {
                _backColor1 = Color.FromArgb(_backColor);
                return _backColor1;
            }
            set
            {
                _backColor1 = value;
                _backColor = _backColor1.ToArgb();
            }
        }

        private MyXlHAlign _horizontalAlignment = MyXlHAlign.xlHAlignLeft; //"xlHAlignLeft";
        /// <summary>
        /// 左右揃え
        /// public enum XlHAlign   
        /// {       
        ///     xlHAlignRight = -4152,       
        ///     xlHAlignLeft = -4131,       
        ///     xlHAlignJustify = -4130,       
        ///     xlHAlignDistributed = -4117,       
        ///     xlHAlignCenter = -4108,       
        ///     xlHAlignGeneral = 1,       
        ///     xlHAlignFill = 5,       
        ///     xlHAlignCenterAcrossSelection = 7,   
        /// }
        /// </summary>
        [Browsable(true)]
        [DisplayName("水平揃え")]
        [Description("水平文字列揃え")]
        public MyXlHAlign HorizontalAlignment
        {
            get { return _horizontalAlignment; }
            set { _horizontalAlignment = value; }
        }

        private MyXlVAlign _verticalAlignment = MyXlVAlign.xlVAlignCenter;//"xlVAlignCenter";
        /// <summary>
        /// 上下揃え
        ///public enum XlVAlign
        ///{
        ///    xlVAlignTop = -4160,
        ///    xlVAlignJustify = -4130,
        ///    xlVAlignDistributed = -4117,
        ///    xlVAlignCenter = -4108,
        ///    xlVAlignBottom = -4107,
        ///}
        /// </summary>
        [Browsable(true)]
        [DisplayName("垂直列揃え")]
        [Description("水平文字列揃え")]
        public MyXlVAlign VerticalAlignment
        {
            get { return _verticalAlignment; }
            set { _verticalAlignment = value; }
        }

        private bool _wrapText = false;
        /// <summary>
        /// 文字列が折り返されるかどうか
        /// </summary>
        [Browsable(true)]
        [DisplayName("折り返え")]
        [Description("文字列が折り返されるかどうか")]
        public bool WrapText
        {
            get { return _wrapText; }
            set { _wrapText = value; }
        }

        private MyXlLineStyle _topLineStyle = MyXlLineStyle.xlContinuous; //"";
        /// <summary>
        ///public enum XlLineStyle
        ///{
        ///xlLineStyleNone = -4142,
        ///xlDouble = -4119,
        ///xlDot = -4118,
        ///xlDash = -4115,
        ///xlContinuous = 1,
        ///xlDashDot = 4,
        ///xlDashDotDot = 5,
        ///xlSlantDashDot = 13,
        ///}
        /// </summary>
        [Browsable(true)]
        [DisplayName("上罫線")]
        [Description("上罫線")]
        public MyXlLineStyle TopLineStyle
        {
            get { return _topLineStyle; }
            set { _topLineStyle = value; }
        }

        private MyXlLineStyle _rightLineStyle = MyXlLineStyle.xlContinuous; //"";
        [Browsable(true)]
        [DisplayName("右罫線")]
        [Description("右罫線")]
        public MyXlLineStyle RightLineStyle
        {
            get { return _rightLineStyle; }
            set { _rightLineStyle = value; }
        }

        private MyXlLineStyle _bottomLineStyle = MyXlLineStyle.xlContinuous; //"";
        [Browsable(true)]
        [DisplayName("下罫線")]
        [Description("下罫線")]
        public MyXlLineStyle BottomLineStyle
        {
            get { return _bottomLineStyle; }
            set { _bottomLineStyle = value; }
        }

        private MyXlLineStyle _leftLineStyle = MyXlLineStyle.xlContinuous; //"";
        [Browsable(true)]
        [DisplayName("左罫線")]
        [Description("左罫線")]
        public MyXlLineStyle LeftLineStyle
        {
            get { return _leftLineStyle; }
            set { _leftLineStyle = value; }
        }

        private string _description = "";
        [Browsable(true)]
        [DisplayName("説明")]
        [Description("説明")]
        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }


        #region ICloneable メンバ

        public object Clone()
        {
            return MemberwiseClone();
        }

        #endregion

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值