Question

Un attribut XML déclaré comme xs: boolean peut être accepté comme étant "vrai", "faux", "0". ou "1". Cependant, dans .NET, Boolean.Parse () acceptera uniquement "true". ou "faux". S'il voit un " 0 " ou "1", il jette un "Mauvais format" exception.

Dans ce cas, quel est le meilleur moyen d’analyser une telle valeur dans un booléen?

(Malheureusement, je suis limité aux solutions .NET 2.0, mais si la v3.5 offre quelque chose, j'aimerais en entendre parler.)

Était-ce utile?

La solution

Je pense que XmlConvert possède toutes les méthodes de conversion entre commun types d'exécution de langage et types XML. En particulier, XmlConvert.ToBoolean a> gère exactement les valeurs booléennes (les chaînes valides sont "1" ou "true" pour true et "0" ou "false" pour false).

Autres conseils

Utiliser CBool ?? au lieu de Boolean.Parse devrait faire l'affaire: bien que vous deviez l'intégrer dans un bloc try / catch (ce qui ne serait pas nécessaire avec Boolean.TryParse ), il convertira avec succès la plupart des valeurs booléennes "sensibles", y compris true / false et 0/1.

Edit: comme indiqué dans un commentaire, cette réponse est un peu inutile pour les programmeurs C #, car CBool ?? est un VB-ism. Il correspond à Microsoft.VisualBasic.CompilerServices.Conversions :: ToBoolean , qui ne convient pas à la consommation générale. Ce qui fait de la classe XMLConvert indiquée dans la réponse acceptée une alternative encore meilleure.

Désinfectez les données avant de tenter de les analyser:

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

Toute autre entrée que true , false , 0 ou 1 lancera toujours un "format incorrect". ; exception (comme il se doit).

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