2012-02-27 14 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; 
    } 
} 

マイヘッダーのオブジェクトにデータが入力されていません。メンバーはNull値として表示されます。下記参照。 Request.Header.TasnsactionIdの値がNullです Request.Header.MessageTypeの値もNullです

何か間違っていますか?

助けがあれば助かります。

+0

閉じる "body"タグはどこから来ますか? –

+0

このXMLについて「再帰的」なものはありません。 – svick

答えて

1

XMLシリアル化は、パブリックメンバーのみで動作します。したがって、フィールドを

public Header header = new Header(); 

に変更することができ、正常に動作するはずです。パブリックフィールドを使用することについて助言しますが、おそらくそれをプロパティにする必要があります:

public Header Header { get; set; } 
+0

ありがとう – Girish