2012-02-27 94 views
0

我有一些XML,我試圖反序列化下面的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; 
    } 
} 

我的標題的對象沒有填充。成員顯示爲空值。見下文。 Request.Header.TasnsactionId的值爲空 Request.Header.MessageType的值也爲空

任何錯誤我在這裏做什麼?

任何幫助將是可觀的。

+0

關閉「body」標記從哪裏來? – 2012-02-27 14:44:28

+0

這個XML沒有什麼「遞歸」。 – svick 2012-02-27 14:50:59

回答

1

XML序列化僅適用於公共成員。所以,你可以將字段更改爲

public Header header = new Header(); 

它應該可以正常工作。雖然我建議你不要使用公共領域,但你應該把它變成一個屬性:

public Header Header { get; set; } 
+0

感謝它的工作 – Girish 2012-02-28 04:37:34