zoukankan      html  css  js  c++  java
  • C# xml与对象相互转换

    例如:

      1.对象转xml(对象序列化为xml)

    string strImage=  XmlSerializeHelper.Serialize<List<ImageSingle>>(imageList);
    View Code

      2.xml转对象(反序列化)

    Image bojimag= XmlSerializeHelper.DeSerialize<Image>(strimage);
    View Code

    该序列化处理类如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml.Serialization;
    using System.IO;
    using System.Xml;
    using System.Text.RegularExpressions;
    
    namespace Helper
    {
        public class XmlSerializeHelper
        {
    
            public static string Serialize<T>(T obj)
            {
                return Serialize<T>(obj, Encoding.UTF8);
            }
    
            //对象转XML
            public static string ObjToXml(object obj)
            {
                using (MemoryStream Stream = new MemoryStream())
                {
                    XmlSerializer xml = new XmlSerializer(obj.GetType());
                    xml.Serialize(Stream, obj);
                    Stream.Position = 0;
                    StreamReader sr = new StreamReader(Stream);
                    string str = sr.ReadToEnd();
                    return str;
                }
    
            }
    
            /// <summary>  
            /// 实体对象序列化成xml字符串  
            /// </summary>  
            /// <typeparam name="T"></typeparam>  
            /// <param name="obj"></param>  
            /// <returns></returns>  
            public static string Serialize<T>(T obj, Encoding encoding)
            {
                try
                {
    
                    if (obj == null)
                        throw new ArgumentNullException("obj");
    
                    var ser = new XmlSerializer(obj.GetType());
                    using (var ms = new MemoryStream())
                    {
                        using (var writer = new XmlTextWriter(ms, encoding))
                        {
                            writer.Formatting = Formatting.Indented;
                            ser.Serialize(writer, obj);
                        }
                        var xml = encoding.GetString(ms.ToArray());
                        xml = xml.Replace("xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"", "");
                        xml = xml.Replace("xmlns:xsd="http://www.w3.org/2001/XMLSchema"", "");
                        xml=Regex.Replace(xml,@"s{2}","");
                        xml = Regex.Replace(xml, @"s{1}/>", "/>");
                        return xml;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    
            /// <summary>  
            /// 反序列化xml字符为对象,默认为Utf-8编码  
            /// </summary>  
            /// <typeparam name="T"></typeparam>  
            /// <param name="xml"></param>  
            /// <returns></returns>  
            public static T DeSerialize<T>(string xml)
                where T : new()
            {
                return DeSerialize<T>(xml, Encoding.UTF8);
            }
    
            /// <summary>  
            /// 反序列化xml字符为对象  
            /// </summary>  
            /// <typeparam name="T"></typeparam>  
            /// <param name="xml"></param>  
            /// <param name="encoding"></param>  
            /// <returns></returns>  
            public static T DeSerialize<T>(string xml, Encoding encoding)
                where T : new()
            {
                try
                {
                    var mySerializer = new XmlSerializer(typeof(T));
                    using (var ms = new MemoryStream(encoding.GetBytes(xml)))
                    {
                        using (var sr = new StreamReader(ms, encoding))
                        {
                            return (T)mySerializer.Deserialize(sr);
                        }
                    }
                }
                catch (Exception e)
                {
                    return default(T);
                }
    
            }  
        }
    }
    XmlSerializeHelper.cs
  • 相关阅读:
    js面向对象编程-高级内容
    (转)js中的hasOwnProperty和isPrototypeOf方法
    Bootstrap_表单
    Bootstrap_表格
    Bootstrap_排版
    Bootstrap_网格系统
    Bootstrap_CSS概览
    redis的搜索组件 redis-search4j
    有哪些值得学习的spring boot开源项目?
    国内最火的10款Java开源项目,都是国人开发,CMS居多
  • 原文地址:https://www.cnblogs.com/muyeh/p/11832298.html
Copyright © 2011-2022 走看看