データのないXElementsを非表示にするのに問題があります。
私がこのコードを持っている場合:
string missing = string.Empty;
XElement missingNodes = new XElement("TOPLEVEL",
new XElement("FIELD1", "VALUE1"),
new XElement("FIELD2", missing),
new XElement("FIELD3", "VALUE3")
);
私はこのスキーマを構築することになります:
<TOPLEVEL>
<FIELD1>VALUE1</FIELD1>
<FIELD2></FIELD2>
<FIELD3>VALUE3</FIELD3>
</TOPLEVEL>
行方不明をString.Emptyではなくnullに変更すると、2番目のフィールドは次のようになります。
<FIELD2 />
空/ヌルデータでノードを非表示にする簡単な方法はありますか?
私はそれをもっとこのように見せたいです:
<TOPLEVEL>
<FIELD1>VALUE1</FIELD1>
<FIELD3>VALUE3</FIELD3>
</TOPLEVEL>
編集:
@sineと@gunr2171のアドバイスに従って、私は空/ヌルノードを追加しないという道を歩みました。
すべてをネストされた新しい形式で(多くのif / thenブランチなしで)保持したかったので、nullの3条件チェックを使用してみました。興味深いことに、何かの内容としてnullを渡しても、XElementはアーティファクトを残しません。
だからこれはトリックをしました:
string missing = null;
XElement missingNodes = new XElement("TOPLEVEL",
new XElement("FIELD1", "VALUE1"),
(missing != null ) ? new XElement("FIELD2", missing) : null,
new XElement("FIELD3", "VALUE3")
);