xml 格式数据与实体相互转换

1.xml文件转为cs文件

1.1.方法:打开“VS 开发人员命令”窗口

             xml转xsd执行语句--' xsd xml文件路径 /outputdir:存放的文件夹路径'
             xsd转cs执行语句-'xsd xsd文件路径  /classes /o:存放的文件夹路径'.
1.2.举例:

xml 格式数据与实体相互转换


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;
        }