Frage

Ein XML-Attribut deklariert als xs: boolean kann akzeptabel "true", "false" sein, "0" oder "1". Doch in .NET, Boolean.Parse () nur dann "wahr" oder "falsch" akzeptieren. Wenn es sieht eine "0" oder "1" ist, eine "Bad-Format" Ausnahme auslöst.

So, da, was ist der beste Weg, einen solchen Wert in einen Boolean zu analysieren?

(Leider bin ich zu .NET 2.0-Lösungen beschränkt, aber wenn v3.5 etwas bietet, würde ich gerne davon hören.)

War es hilfreich?

Lösung

Ich denke, dass XmlConvert alle Methoden für die Umwandlung zwischen gemeinsam hat language Runtime-Typen und XML-Typen. Besonders XmlConvert.ToBoolean behandelt genau die Boolesche Werte (gültig Strings ist "1" oder "true" für wahr und "0" oder "false" für false).

Andere Tipps

statt CBool Mit Boolean.Parse sollte es tun: Obwohl Sie es in einem try/catch Block eingebettet werden müssen, werden (die nicht benötigt werden würden, wenn Boolean.TryParse verwendet wird), wird es erfolgreich die meisten ‚sinnvoll‘ Boolesche Werte umwandeln, einschließlich wahr / false und 0/1.

Edit: wie in einem Kommentar darauf hingewiesen, diese Antwort ist irgendwie nutzlos für C # -Programmierer, wie CBool ein VB-ism ist. Es bildet auf Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean, die für den allgemeinen Verbrauch nicht geeignet ist. in der akzeptierten Antwort Das macht die XmlConvert Klasse eine noch bessere Alternative aufgezeigt.

die Daten Desinfizieren, bevor es zu analysieren:

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

Jede andere Eingabe als true false 0 oder 1 werden nach wie vor ein "Bad-Format" werfen Ausnahme (wie es sein sollte).

return value === 'true' || Number(value)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top