2012-02-27 65 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