Рекурсивная десериализация XML - PullRequest
0 голосов
/ 27 февраля 2012

У меня есть какой-то 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 равно Null Значение Request.Header.MessageType также равно Null

Что-то не так я здесь делаю?

Любая помощь будет заметна.

1 Ответ

1 голос
/ 27 февраля 2012

XML-сериализация работает только для открытых участников.Таким образом, вы можете изменить поле на

public Header header = new Header();

, и оно должно работать нормально.Хотя я бы посоветовал вам не использовать открытые поля, вы, вероятно, должны превратить его в свойство:

public Header Header { get; set; }
...