zoukankan      html  css  js  c++  java
  • Net 使用XmlSerializer序列化对象,如果属性值为空字符串的时候,序列化后的节点强制不简写

    问题概述,最近在接某些特殊部门的项目后,发现当我生成一个XML报文后,当属性为空字符串的时候,生成的xml节点默认是缩写模式比如

    public string note {get;set;}

     生成的xml 节点是<note />,目标期望生成<note></note>

    解决 

      直接上代码

      public class XmlTextWriterFull : XmlTextWriter
        {
            public XmlTextWriterFull(TextWriter sink) : base(sink) { }
    
            public XmlTextWriterFull(Stream stream, Encoding enc) : base(stream, enc) { }
            public XmlTextWriterFull(String str, Encoding enc) : base(str, enc) { }
    
    
            public override void WriteEndElement()
            {
                base.WriteFullEndElement();
            }
        }

    调用

     public static string XmlSerialize1(object o, Encoding encoding)
            {
                if (o == null)
                    throw new ArgumentNullException("o");
                if (encoding == null)
                    throw new ArgumentNullException("encoding");
    
                string xml = "";
                try
                {
                    System.IO.MemoryStream memOut = new System.IO.MemoryStream();
                    XmlTextWriterFull writer = new XmlTextWriterFull(memOut, Encoding.UTF8); 
                    var serializer = new XmlSerializer(o.GetType());
                    serializer.Serialize(writer, o);
                    memOut.Position = 0;
                    using (StreamReader reader = new StreamReader(memOut, Encoding.UTF8))
                    {
                        xml = reader.ReadToEnd();
                    }              
                    return xml;
                }
                catch (Exception ex)
                {
    
                }
                return xml;
            }

     

  • 相关阅读:
    句子
    Https
    SSH
    uCMDB
    snapshot与release
    Ansible
    .NET core webApi 使用JWT验证签名(转)
    .NET core 使用Swagger(转)
    微服务的4个设计原则和19个解决方案(转)
    .NET Core 使用RabbitMQ(转)
  • 原文地址:https://www.cnblogs.com/yibey/p/12922379.html
Copyright © 2011-2022 走看看