2013-08-26 59 views
1

我使用C#將字符串反序列化爲對象。 XML字符串看起來像反序列化具有空屬性的布爾值?

"<Authentication xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"> 
    <Status>Success</Status> 
    <Available i:nil=\"true\"/> 
</Authentication>" 

雖然我設法使布爾屬性爲空的處理可用,我只是想知道什麼是處理我的正確方法:無= \「真正\」?

我應該正在做別的其他不僅僅是做一個屬性可用屬性爲空的?

請注意,如果不將bool屬性設置爲空,它會拋出一個錯誤,即字符串「」不能轉換爲bool,因此使用空值排序我的問題,但我只是好奇我是否應該這樣做不僅僅是使這個可空的

謝謝。

+0

我認爲你的財產_應該可以爲空。 XML模式非常明確地告訴你,該屬性可以是「true」,「false」,或「null」。 IIRC,這將反序列化好,但如果你試圖序列化它,你將不會得到相同的XML。你應該仔細檢查,但我_think_如果你用'[XmlElementAttribute(IsNullable = true)]裝飾你的類屬性,它應該這樣做,當你有'null'時它會輸出'i:nil =「true」''屬性價值。編輯:沒關係,我只是做了一個測試,你不需要定義元素IsNullable。你應該很好走。 –

回答

0

你的財產應該可爲空。 XML明確告訴你,該屬性可以是true,falsenull;三是有效的值,你的類應該支持所有3

你不需要做任何其他比使你的財產bool?; XmlSerializer將妥善處理讀取/寫入i:nil="true"當財產是null

只要確保你的代碼被設計爲佔null值適用這樣你就不會得到任何的異常。