XML的属性声明为xs:布尔可以接受的是"真","假"、"0"或"1".然而,在。网、布尔。分析()将只接受"真实"或"虚假"。如果它看到一个"0"或"1",它将引发一个"坏的格式"例外。

因此,有鉴于此,什么是最好的方式来分析这样一个数值进入一个布尔?

(不幸的是,我很有限。网2.0的方案,但如果v3。5提供的东西,我很想听到关于它.)

有帮助吗?

解决方案

我认为 XmlConvert 拥有所有常见的转换方法语言运行时类型和XML类型。特别是 XmlConvert.ToBoolean 完全处理布尔值(有效字符串为“1”或“true”表示true,“0”或“false”表示false)。

其他提示

使用 CBool 而不是的 Boolean.Parse 应该做的把戏:虽然你就得把它嵌入一个 try/catch 方块(其不会被需要的时候使用 Boolean.TryParse),它将成功地转换大多数'合理的'布尔的价值观,包括true/false和0/1.

编辑:如指出的评论,这个答案是有点无用的C#程序员, CBool 是VB-ism。这地图 Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean, ,这是不适用于一般的消费。这使得XMLConvert类指出,在所接受的回答一个更好的选择。

在尝试解析数据之前清理数据:

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

true false 0 1 之外的任何其他条目仍会抛出“错误格式” ;例外(应该是)。

return value === 'true' || Number(value)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top