[英]What is the best way to parse an XML boolean attribute (in .NET)?
声明为xs:boolean的XML属性可以接受为“true”,“false”,“0”或“1”。 但是,在.NET中,Boolean.Parse()只接受“true”或“false”。 如果它看到“0”或“1”,则抛出“Bad Format”异常。
那么,鉴于此,将这样的值解析为布尔值的最佳方法是什么?
(不幸的是,我只限于.NET 2.0解决方案,但如果v3.5提供了一些东西,我很乐意听到它。)
我认为XmlConvert具有在公共语言运行时类型和XML类型之间进行转换的所有方法。 特别是XmlConvert.ToBoolean
完全处理布尔值(对于true,有效字符串为“1”或“true”,对于false,有效字符串为“0”或“false”)。
使用CBool
而不是Boolean.Parse
应该可以解决这个问题:虽然你必须将它嵌入try/catch
块(使用Boolean.TryParse
时不需要),但它会成功转换大多数'明智的'布尔值,包括真/假和0/1。
编辑:正如评论中所指出的,这个答案对于C#程序员来说是没用的,因为CBool
是一个VB主义。 它映射到Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean
,它不适合一般消费。 这使得XMLConvert类在接受的答案中指出了更好的选择。
return value === 'true' || Number(value)
在尝试解析数据之前清理数据:
string InnerText = yourXmlNode.InnerText;
if (InnerText.Equals("0"))
InnerText = "false";
else if (InnerText.Equals("1"))
InnerText = "true";
除true , false , 0或1之外的任何其他条目仍将抛出“Bad Format”异常(应该如此)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.