When you serialize an empty collection/list with XmlSerializer, an element is written.
If you don’t want anything to be serialized, you can use this trick: add a function ShouldSerialize..().

Example:

public class Myclass
{
    public List setters;
    public bool ShouldSerializesetters()
    { return setters != null && setters.Count > 0; }
}

The function name is “ShouldSerialize”+<the collection field or property name>

The XmlSerializer will detect this function automatically and ask it to know if it should serialize the corresponding field or property, or not.