2009-04-27 4 views
1

내 프로젝트에서 몇 가지 속성을 클래스로 다시 구문 분석해야하는 XmlElement가 수신됩니다.XmlConvert 및 nullable 결과?

이러한 매핑에 대해서는 XmlConvert 클래스를 사용합니다. 그러나 XML이되는 소스는 빈 노드 또는 읽을 수없는 노드입니다. 오히려 많은 오류를 던지고, 나는 내 수업에 저장하기 위해 다시 NULL을 얻고 싶다.

나는 다음과 같은 정신으로 일을 않는 XmlConvertExtentions 클래스를 만들기 시작

:

public static class XmlConvertExtentions 
{ 
    public static int? ToNullableInt32 (this XmlConvert c, string s){ 
     try{ return XmlConvert.ToInt32(s); } 
     catch{ return null; } 
    } 
} 

내가 강하게 나는 그런 기능을 필요로하는 최초의 developper 아니에요 있다고 생각 나는 '만약 내가 궁금하네요 아직 또 다른 바퀴를 발명하지 않아.
나는 정말로 추악한 바퀴를 발명하고있는 것처럼 느낍니다. try catch는 나 빠졌다. 더 좋은 방법이 있습니까?

--EDIT--
는 그리고 지금은 그것도 작동하지 않는 것으로 나타났습니다 : P
난 당신이 정적 클래스를 확장 할 수 있기 때문에 생각합니다.

답변

1

노드가 null이거나 비어 있으면 s은 무엇입니까?

어떻게 막 :

if(string.IsNullOrEmpty(s)) return null; 
return XmlConvert.ToInt32(s); 

참고 또한 LINQ - 투 - XML은 (캐스트를 통해) 이러한 변환의 더 우아한 취급이 있는지 확인합니다.

0

사례/상황에서 가능할지 모르겠지만 XML 직렬화 클래스 사용에 대해서는 이미 알고 있지만 XmlSerializer 클래스를 사용하여 XML을 사용자 지정 클래스의 인스턴스로 직접 deserialize하는 대신 그것 모두 수동으로?

+0

예, 있습니다. 그러나 입력이 여러 가지 형식이 될 수 있고 일부 사용자 정의 논리가 수행되어야하기 때문에 표준 직렬화가 작동하지 않습니다. 그 외에도, 나는 결코 상자 직렬화 작업을하지 못했습니다. 정말 너무 제한적입니다. –