递归XML反序列化

时间:2012-02-27 13:52:57

标签: c# .net xml xml-serialization xml-deserialization

我有一些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

我在这里做错了什么?

任何帮助都会很明显。

1 个答案:

答案 0 :(得分:1)

XML序列化仅适用于公共成员。因此,您可以将字段更改为

public Header header = new Header();

它应该可以正常工作。虽然我建议你不要使用公共字段,但你应该把它变成一个属性:

public Header Header { get; set; }