xml 格式數據與實體相互轉換

1.xml文件轉爲cs文件

1.1.方法:打開“VS 開發人員命令”窗口

             xml轉xsd執行語句--' xsd xml文件路徑 /outputdir:存放的文件夾路徑'
             xsd轉cs執行語句-'xsd xsd文件路徑  /classes /o:存放的文件夾路徑'.
1.2.舉例:



2.xml格式數據轉爲對象實體

2.1.方法代碼:

 實體類型  實體名稱 = new 實體類型();
 實體名稱 = (實體類型)Deserialize(xml格式數據字符串, 實體名稱 .GetType());

2.2.轉換方法:

        /// <summary>
        /// 反序列化XML字符串爲指定類型
        /// </summary>
        public static object Deserialize(string Xml, Type ThisType)
        {
            XmlSerializer xmlSerializer = new XmlSerializer(ThisType);
            object result;
            try
            {
                using (StringReader stringReader = new StringReader(Xml))
                {
                    result = xmlSerializer.Deserialize(stringReader);
                }
            }
            catch (Exception innerException)
            {
                bool flag = false;
                if (Xml != null)
                {
                    if (Xml.StartsWith(Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble())))
                    {
                        flag = true;
                    }
                }
                throw new ApplicationException(string.Format("Couldn't parse XML: '{0}'; Contains BOM: {1}; Type: {2}.",
                Xml, flag, ThisType.FullName), innerException);
            }
            return result;
        }

          
3.實體轉換爲xml格式數據

3.1.方法代碼:

    Serializer(實體名稱.GetType(), 實體名稱);    

3.2.轉換方法:

        /// <summary>
        /// 序列化XML文件
        /// </summary>
        /// <param name="type">類型</param>
        /// <param name="obj">對象</param>
        /// <returns></returns>
        public static string Serializer(Type type, object obj)
        {
            MemoryStream Stream = new MemoryStream();
            //創建序列化對象
            XmlSerializer xml = new XmlSerializer(type);
            try
            {
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.OmitXmlDeclaration = true;
                XmlTextWriter writer = new XmlTextWriter(Stream, Encoding.UTF8);
                //序列化對象
                XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
                namespaces.Add("", "");
                xml.Serialize(writer, obj, namespaces);
            }
            catch (InvalidOperationException)
            {
                throw;
            }
            Stream.Position = 0;
            StreamReader sr = new StreamReader(Stream);
            string str = sr.ReadToEnd();
            return str;
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章