XmlSerializer序列化对象去掉命名空间,并指定编码

2022-11-14  乐帮网

c#

代码如下:

  /// <summary>
        /// 把对象序列化为xml字符串
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj">object</param>
        /// <param name="encoding">编码方式</param>
        /// <param name="namespaces">是否有默认的命名空间串</param>
        /// <returns></returns>
        public static string SerializeObject<T>(T obj, Encoding encoding, bool namespaces = false)
        {
            if (obj != null)
            {
                if (encoding == null)
                    encoding = Encoding.UTF8;
                using (MemoryStream ms = new MemoryStream())
                {
                    using (XmlTextWriter textWriter = new XmlTextWriter(ms, encoding))
                    {
                        XmlSerializer serializer = new XmlSerializer(typeof(T));
                        if (namespaces)
                            serializer.Serialize(textWriter, obj);
                        else
                        {
                            XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                            ns.Add("", "");
                            serializer.Serialize(textWriter, obj, ns);
                        }
                    }
                    return encoding.GetString(ms.GetBuffer());
                }
                  
            }
            else
            {
                return String.Empty;
            }
        }

 

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力