如何强制 XmlSerializer 包含空列表的空标记

本文关键字:列表 何强制 XmlSerializer 包含空 | 更新日期: 2023-09-27 18:31:27

无论出于何种原因,在序列化过程中,XmlSerializer 都不会包含空列表。我没有找到太多关于此行为是否正确或是否可以覆盖的文档。 我包括我尝试序列化的类型的代码和序列化代码,希望有人可以对此有所了解。

[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/FacilitySettings.xsd")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://tempuri.org/FacilitySettings.xsd", IsNullable=true)]
public class WeightSettings
{
          public List<string> WeightOZIdentifiers 
          {
                get 
                {
                    return this.weightOZIdentifiersField;
                }
                set 
                {
                    this.weightOZIdentifiersField = value;
                }
           }
}

public static string ToXmlString<T>(this T obj)
{
     var builder = new StringBuilder();
     using (var stringWriter = new StringWriter(builder))
     {
         var xml = new XmlTextWriter(stringWriter);
         var serializer = new XmlSerializer(obj.GetType());
         serializer.Serialize(xml, obj);
         return builder.ToString();
     }
}

编辑以反映

如何强制 XmlSerializer 包含空列表的空标记

> XmlSerializer无法序列化空数组,因为他不知道这个数组的大小。尝试先初始化数组,然后对其进行序列化。

WeightOZIdentifiers = new string[10];