C#::XmlSerializer::デフォルト値のとき出力を省略

デフォルト値(0とか)が入っているプロパティをシリアライズしないようにするには、System.ComponentModel.DefaultValueAttribute属性で規定値を定義する。

[XmlType("entry")]
public class Entry
{
  /// <summary>オーダー</summary>
  [XmlAttribute("order")]
  [System.ComponentModel.DefaultValue(-1)]
  public int Order = -1;

  [XmlText]
  public string Message{ get;set;}
}

こんな感じのクラスであれば、Orderが-1のときorder="-1"という属性を生成しない。
ほぼ規定値で使用するプロパティに使用すると生成されるXMLが若干すっきりします。