Was ist der beste Weg, um ein XML-boolean-Attribut (in .NET) zu analysieren?
-
06-07-2019 - |
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.)
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)