2008-11-05 66 views
18

聲明爲xs:boolean的XML屬性可接受爲「true」,「false」,「0」或「1」。但是,在.NET中,Boolean.Parse()只接受「true」或「false」。如果它看到「0」或「1」,則會拋出「格式錯誤」異常。什麼是解析XML布爾屬性(在.NET中)的最佳方式?

那麼,鑑於此,將這種值解析爲布爾值的最佳方法是什麼?

(不幸的是,我僅限於.NET 2.0的解決方案,但如果V3.5提供的東西,我很想聽到這件事。)

回答

35

我認爲XmlConvert具有在公共語言運行時類型和XML類型之間進行轉換的所有方法。特別是XmlConvert.ToBoolean完全處理布爾值(有效字符串爲「1」或「真」爲真,「0」或「假」爲假)。

+0

非常好..正是我在尋找的東西(知道我應該花更多時間來瀏覽.Net庫參考) – 2008-11-05 15:22:38

2

使用的CBool代替Boolean.Parse應該做的伎倆:雖然您必須將其嵌入try/catch塊(使用Boolean.TryParse時不需要),它將成功轉換大多數「合理的」布爾值,包括true/false和0/1。

編輯:正如在評論中指出的,這個答案對於C#程序員來說是有用的,因爲CBool是一個VB主題。它映射到Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean,這是不適合一般消費。這使得XMLConvert類在接受的答案中指出了一個更好的選擇。

+0

我只看到「VBool」定義爲VB6,而不是.NET。有可能VB.NET將它交給一些Microsoft.VisualBasic。*方法,但我使用C#,所以我需要知道調用的基礎方法。 – 2008-11-05 15:25:06

0

嘗試分析它之前清理數據:

string InnerText = yourXmlNode.InnerText;  
if (InnerText.Equals("0")) 
    InnerText = "false"; 
else if (InnerText.Equals("1")) 
    InnerText = "true"; 

任何其他項採取比真正,或仍然會拋出一個 「格式錯誤」 異常(如它應該是)。

0
return value === 'true' || Number(value) 
相關問題