Hello Everybody,
just a simple question. Is there an attribute to skip empty arrays in the xml-serialization of c#? This would increase human-readability of the xml-output.
Thanks in advance
Matze
From stackoverflow
-
Well, you could perhaps add a
ShouldSerializeFoo()
method:using System; using System.ComponentModel; using System.Xml.Serialization; [Serializable] public class MyEntity { public string Key { get; set; } public string[] Items { get; set; } [EditorBrowsable(EditorBrowsableState.Never), Browsable(false)] public bool ShouldSerializeItems() { return Items != null && Items.Length > 0; } } static class Program { static void Main() { MyEntity obj = new MyEntity { Key = "abc", Items = new string[0] }; XmlSerializer ser = new XmlSerializer(typeof(MyEntity)); ser.Serialize(Console.Out, obj); } }
The
ShouldSerialize{name}
patten is recognised, and the method is called to see whether to include the property in the serialization. There is also an alternative{name}Specified
pattern that allows you to also detect things when deserializing (via the setter):[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)] [XmlIgnore] public bool ItemsSpecified { get { return Items != null && Items.Length > 0; } set { } // could set the default array here if we want }
-
Thanks a lot! It works! Really fast replies here!
Have a nice Holiday Season
Marc Gravell : No problem; if that answers it, click the tick ;-pCharles Graham : Yeah, if it works, hen give him props and mark it as answered.
0 comments:
Post a Comment