2012-07-24 2 views
2

XML 스트림을 deserialize하기 위해 XmlSerializer 클래스를 사용할 때 문제가 있습니다.XML의 누락 된 태그로 인해 XmlSerializer에서 속성을 만들 수 없습니다.

나는이 같은 객체 :

public class Test 
{ 
    [XmlElement("data")] 
    public AnotherObject Data 
    { 
    get; set; 
    } 

    // other properties 
} 

내가 그 역 직렬화 할 때 그것은 제대로 작동합니다 다음 XML 같은 경우, 그러나

<Test> 
    <data>...</data> 
    <something else... /> 
</Test> 

을 :

<Test> 
    <something else... /> 
</Test> 

새로 만든 개체의 Data 속성을 읽으려고하면 코드에서 예외가 throw됩니다. 개체를 관찰하려고하면 디버거에서 "예외를 계산할 수 없습니다"라는 내용을 인쇄합니다.

XML에 해당 태그가 없더라도 속성을 존재 시키길 원합니다.

그렇게 할 수 있습니까?

감사합니다.

+0

'.Data'는'null' 참조입니까? –

답변

3

XML 비 직렬화는 속성을 설정하기 전에 호출을 기본 생성자로 사용합니다. data 속성을 기본값으로 설정하여 역 직렬화에서로드 된 경우 덮어 씁니다.

+0

그 것처럼 간단했습니다. 감사. –

1

이 도움이된다면보기 : null 값이 기본적으로 널 (null)로 데이터를 수 AnotherObject 허용 할 수

public class Test 
{ 
    [XmlElement("data")] 
    public System.Nullable<AnotherObject> Data 
    { 
    get; set; 
    } 

    // other properties 
} 

.

참고 : 이것은 사용자의 스키마에 크게 좌우됩니다. 스키마가 널 (NULL) 값을 방지하면 작동하지 않습니다. 더 많은 정보를 원하시면 다음을보십시오 : http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

관련 문제