2012-02-27 1 views
0

아래 XML을 deserialize하려고하는 XML이 있습니다.재귀 적 XML 직렬화

<?xml version="1.0" encoding="UTF-8"?> 

<disproot version="1.0"> 
    <header> 
    <msg-type> init_req </msg-type> 
    <txn-id> 0090 </txn-id> 
    </header> 
    <body /> 
</disproot> 

내 개체는 다음과 유사합니다.

[XmlRoot("disproot")] 
public class Request 
{ 
    [XmlAttribute("version")] 
    public string Version 
    { get; set; } 

    [XmlElement("header", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    Header header = new Header(); 
} 


public class Header 
{ 
    public Header() 
    { 

    } 
    [XmlElement("txn-id")] 
    public string TransactionId 
    { 
     get; 
     set; 
    } 

    [XmlElement("msg-type")] 
    public string MessageType 
    { 
     get; 
     set; 
    } 
} 

내 머리글의 개체가 채워지지 않습니다. 멤버가 Null 값으로 표시됩니다. 아래를 참조하십시오. Request.Header.TasnsactionId의 값은 여기에 내가 뭐하는 거지 널 Request.Header.MessageType의 값이 또한 잘못된

아무것도 널입니다?

도움이 될 것입니다.

+0

닫는 "body"태그는 어디서 오는 것입니까? –

+0

이 XML에 대한 "재귀 적"개념은 없습니다. – svick

답변

1

XML serialization은 공용 멤버에서만 작동합니다. 따라서 필드를

public Header header = new Header(); 

으로 변경하면 정상적으로 작동합니다. 공개 필드를 사용하는 것에 대해서는 조언하지만, 아마도 재산으로 작성해야합니다.

public Header Header { get; set; } 
+0

고마워요. – Girish