.net xml .net-2.0 boolean xml-attribute

¿Cuál es la mejor manera de analizar un atributo booleano XML(en.NET)?



.net-2.0 xml-attribute (4)

Desinfecte los datos antes de intentar analizarlos:

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

Cualquier otra entrada que sea verdadera , falsa , 0 o 1 seguirá emitiendo una excepción de "Formato incorrecto" (como debería ser).

Un atributo XML declarado como xs: boolean puede ser aceptable como "verdadero", "falso", "0" o "1". Sin embargo, en .NET, Boolean.Parse () solo aceptará "verdadero" o "falso". Si ve un "0" o "1", arroja una excepción de "Formato incorrecto".

Entonces, dado que, ¿cuál es la mejor manera de analizar ese valor en un booleano?

(Desafortunadamente, estoy limitado a las soluciones .NET 2.0, pero si v3.5 ofrece algo, me encantaría saberlo).


Usar CBool lugar de Boolean.Parse debería hacer el truco: aunque tendrá que incrustarlo en un bloque try/catch (que no sería necesario al usar Boolean.TryParse ), convertirá con éxito la mayoría de los valores booleanos ''sensibles'' , incluyendo verdadero / falso y 0/1.

Editar: como se señala en un comentario, esta respuesta es un poco inútil para los programadores de C #, ya que CBool es un VB-ismo. Se asigna a Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean , que no es adecuado para el consumo general. Lo que hace que la clase XMLConvert señalada en la respuesta aceptada sea una alternativa aún mejor.


Creo que XmlConvert tiene todos los métodos para convertir tipos de tiempo de ejecución y tipos de lenguaje comunes. Especialmente XmlConvert.ToBoolean maneja exactamente los valores booleanos (las cadenas válidas son "1" o "verdadero" para verdadero y "0" o "falso" para falso).


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