解析XML布尔属性(在.NET中)的最佳方法是什么?

时间:2008-11-05 15:11:49

标签: .net xml .net-2.0 boolean xml-attribute

声明为xs:boolean的XML属性可以接受为“true”,“false”,“0”或“1”。但是,在.NET中,Boolean.Parse()只接受“true”或“false”。如果它看到“0”或“1”,则会抛出“Bad Format”异常。

那么,鉴于此,将这样的值解析为布尔值的最佳方法是什么?

(不幸的是,我只限于.NET 2.0解决方案,但如果v3.5提供了一些东西,我很乐意听到它。)

4 个答案:

答案 0 :(得分:35)

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

答案 1 :(得分:2)

使用CBool代替Boolean.Parse应该可以解决问题:尽管您必须将其嵌入try/catch块中(使用{{1}时不需要) }),它将成功转换大多数“合理的”布尔值,包括true / false和0/1。

编辑:正如评论中所指出的,这个答案对于C#程序员来说是没用的,因为Boolean.TryParse是一个VB主义。它映射到CBool,这不适合一般消费。这使得XMLConvert类在接受的答案中指出了更好的选择。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

return value === 'true' || Number(value)