문제

XS : 부울로 선언 된 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-Iris입니다. 그것은 매핑됩니다 Microsoft.VisualBasic.CompilerServices.Conversions::ToBoolean, 일반 소비에 적합하지 않습니다. 이는 XMLConvert 클래스가 수용된 답변에서 더 나은 대안으로 지적하게합니다.

구문 분석을 시도하기 전에 데이터를 소독하십시오.

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

다른 항목 이외의 항목 진실, 거짓, 0 또는 1 여전히 "나쁜 형식"예외를 던질 것입니다.

return value === 'true' || Number(value)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top