2009-09-24 33 views
0

我的工作得到了一些對象序列化通過MVC的網站,並通過XML,JSON,等回來的東西,我找不發送空元素的最佳途徑。DataContractSerializer的,EmitDefaultValue和空標籤

在一個完美的世界,簡單的連接EmitDefaultValue:= False以在DataContract數據成員就足夠了,但在某些情況下,它只是不飛。

一個String默認不算什麼,但是我不想要序列如果它們沒有或的String.Empty。列表和集合也一樣。我不想讓他們序列化,如果他們沒有,或者如果他們是空的,0

計數似乎有一些不那麼漂亮的選項。

  1. 定製XmlTextWriter該緩衝器本身並丟棄空元素
  2. 之前的對象序列,循環通過支柱,設置空爲Nothing,計數-0爲Nothing
  3. XSLT那滴空元素
  4. 正則表達式輸出字符串的出路

所有這些似乎有些邪惡,1是最小的邪惡,但離開微不足道的事情。那裏有其他一些技巧嗎?

+0

我認爲它的.net,但我可能是錯的。 – IAdapter 2009-09-24 13:49:48

回答

0

答案是數據協定序列化並不意味着讓您欣賞到XML的格式,那麼多的控制。這不是這個問題。如果你需要這麼多的控​​制,那麼你需要使用XML序列化器,並且你可能需要實現IXmlSerializable。

或者,你可以重溫你的理由不想連載這些「空」的對象。你可能會發現這不值得花時間。