空タグの扱いに困る

オブジェクトをXMLに変換する際、下記4パターンの定義がシステムによって違う事で困ってます。

  • null→空タグ
  • null→タグ無
  • 空文字列→空タグ
  • 空文字列→タグ無し

ようは、からっぽの定義なんですよね。プログラム的に見ればどちらも「空っぽ」として扱えばいいと思うんですけどね。

現在接続先から要求されている事は、null→空タグなのだが、Axisが生成するスタブはプロパティがnullの時はタグそのものを出力しない仕様になっている。

要求を満たすためにはたとえ使わないプロパティでも明示的に空文字列や空のインスタンスで初期化してあげないといけない。美しくないよなぁ…。

接続先のシステムに以下のようなコードがあるんですよね。

// このプロパティは設定されていてはいけない
if (property == 空文字列) {
  //指定されてないのでOK!
} else {
  //設定されているのでエラー!
}

特別な理由が無い限りnullも指定無しとして扱って欲しい所ですが、でかいシステムなので要望が無理なら、こちら側で使ってないプロパティを明示的に初期化する事にします。

バインディング時に困っているのが、空タグはテキストノードとして認識されないので、明示的に空文字列を設定するのは、エレメントノードを検出した段階で空文字列を設定しなければいけないんだが…空タグかどうか判定するのは、子ノードが無い事ってのでいいのかなぁ?