質問

xs:boolean として宣言された XML 属性は、「true」、「false」、「0」、または「1」を受け入れることができます。ただし、.NET では、Boolean.Parse() は「true」または「false」のみを受け入れます。「0」または「1」を検出すると、「不正なフォーマット」例外がスローされます。

それでは、そのような値をブール値に解析する最良の方法は何でしょうか?

(残念ながら、私は .NET 2.0 ソリューションに限定されていますが、v3.5 で何かが提供されるのであれば、ぜひ知りたいです。)

役に立ちましたか?

解決

XmlConvert には、一般的な言語ランタイムタイプとXMLタイプ。特に XmlConvert.ToBoolean はブール値を正確に処理します(有効な文字列は、trueの場合" 1"または" true"、falseの場合" 0"または" false"です)。

他のヒント

使用する CBool の代わりに Boolean.Parse トリックを実行する必要があります:に埋め込む必要がありますが、 try/catch ブロック (使用時には必要ありません) Boolean.TryParse)、true/false や 0/1 など、ほとんどの「意味のある」ブール値を正常に変換します。

編集:コメントで指摘されているように、この答えはC#プログラマーにとっては役に立たないものです。 CBool VBイズムです。にマッピングされます Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean, 、一般的な消費には適していません。これにより、受け入れられた回答で指摘されている XMLConvert クラスがさらに優れた代替手段になります。

データを解析する前にサニタイズします:

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

true false 0 、または 1 以外のエントリは、引き続き「不正な形式」をスローします;例外(あるべき)。

return value === 'true' || Number(value)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top