将字典序列化为XML

时间:2014-09-21 15:46:03

标签: c# xml dictionary

我有返回Dictionary的方法(键和值是字符串)。如何序列化它? 我正在尝试将mydictionary.Key序列化为 msisdn ,将mydictionary.Value序列化为消息 这是我的xml字符串:

 <?xml version="1.0" encoding="UTF-8"?>  
 <request>
 <head>
 <operation>submit</operation>
 <login>login</login> 
 <password>password</password>
 <title>TITLE</title> 
 <scheduled>2011-10-01 15:40:05</scheduled>
 <isbulk>false</isbulk> 
 <controlid>111</controlid>
 </head> 
 <body> // values from dictionary
 <msisdn>333333</msisdn> 
 <message>message one</message>
 </body> 
 <body> 
 <msisdn>1111</msisdn> 
 <message>message two</message>
 </body> 
 </request>

下面的类工作,但我想从Dictionary中序列化MessageBodyXmlBodyTagFields主体。

#region Message Fields XML

[XmlRoot(ElementName = "request", Namespace = "", IsNullable = false)]

public class MessageBodyXmlRoot
{

    [XmlElement("head")]
    public MessageBodyXmlFields[] MessageBodyXmlFields { get; set; }

    [XmlElement("body")]
    public MessageBodyXmlBodyTagFields[] MessageBodyXmlBodyTagFields { get; set; }
}

public class MessageBodyXmlFields
{
    [XmlElement("operation")]
    public string Operation { get; set; }

    [XmlElement("login")]
    public string Login { get; set; }

    [XmlElement("password")]
    public string Password { get; set; }

    [XmlElement("title")]
    public string Title { get; set; }

    [XmlElement("scheduled")]
    public string Scheduled { get; set; }

    [XmlElement("isbulk")]
    public bool Isbulk { get; set; }

    [XmlElement("controlid")]
    public string Controlid { get; set; }

}

public class MessageBodyXmlBodyTagFields 
{
    [XmlElement("msisdn")]
    public string PhoneNumber { get; set; }

    [XmlElement("message")]
    public string Message { get; set; }

}

#endregion

谢谢。

1 个答案:

答案 0 :(得分:0)

假设实际的序列化已经有效,您只需要一种方法来填充数据:

Dictionry<string, string> tags = SomeMethod();

messageBody.MessageBodyXmlBodyTagFields = tags
      .Select(kv => new MessageBodyXmlBodyTagFields   
         { PhoneNumber = kv.Key, Message = kv.Value })
      .ToArray();